[컴퓨터시스템구조] 15. MIPS 배열 vs. 포인터

2023. 10. 15. 02:52·컴퓨터시스템구조
목차
  1. 배열 vs. 포인터
  2. 배열
  3. 포인터 배열
  4. 배열 vs. 포인터 비교

배열 vs. 포인터

  • 배열 인덱싱
    • 찾으려면 요소 크기에 인덱스를 곱해야한다.
    • 배열 기본 주소에 추가
  • 포인터는 메모리 주소에 직접적으로 대응한다.
    • 인덱싱 복잡성을 피할 수 있다.

 


 

배열

  • C 코드
clear1(int array[], int size) {
    int i;
    for (i = 0; i < size; i += 1)
        array[i] = 0;
}
  • i : $t0
  • array 주소 : $a0
  • size : $a1

 

  • MIPS 코드
    move $t0, $zero             # i=0
loop1:
    sll $t1, $t0, 2                   # $t1=i*4
    add $t2, $a0, $t1            # $t2=&array[i]
    sw $zero, 0($t2)              # array[i]=0
    addi $t0, $t0, 1                # i+=1
    slt $t3, $t0, $a1               # i<size 참이면 $t3=1
    bne $t3, $zero, loop1

 


 

포인터 배열

  • C 코드
clear2(int *array, int size) {
    int *p;
    for (p = &array[0]; p < &array[size]; p = p + 1)
        *p = 0;
}
  • p : $t0
  • array 주소 : $a0
  • size : $a1

 

  • MIPS 코드
    move $t0, $a0                # p=&array[0]
    sll $t1, $a1, 2                  # $t1=size*4
    add $t2, $a0, $t1            # $t2=&array[size]
loop2:
    sw $zero, 0($t0)              # Memory[p]=0
    addi $t0, $t0, 4                # p+=4
    slt $t3, $t0, $t2                # p<&array[size] 참이면 $t3=1
    bne $t3, $zero, loop2

 


 

  • 루프문 안에서 배열은 명령이 6개 반복되고, 포인터 배열은 4개 반복된다.
    • 일반적으로 포인터로 짠게 더 효율적이다.

 


 

배열 vs. 포인터 비교

  • 배열에서는 루프 내부로 이동해야 한다.
    • 증가된 i에 대한 지수 계산의 일부
    • 참조 증가 포인터
  • 컴파일러는 포인터를 수동으로 사용하는 것과 동일한 효과를 얻을 수 있다.
    • 유도변수 제거
    • 프로그램을 더 명확하고 안전하게 만드는 것이 더 좋다.
저작자표시 변경금지 (새창열림)

'컴퓨터시스템구조' 카테고리의 다른 글

[컴퓨터시스템구조] 17. 부동 소수점  (1) 2023.10.15
[컴퓨터시스템구조] 16. 컴퓨터 산술(mult, mfhi, mflo, mul, div)  (0) 2023.10.15
[컴퓨터시스템구조] 14. MIPS Sort  (1) 2023.10.15
[컴퓨터시스템구조] 13. MIPS 동기화  (0) 2023.10.15
[컴퓨터시스템구조] 12. MIPS 주소지정 정리  (0) 2023.10.14
  1. 배열 vs. 포인터
  2. 배열
  3. 포인터 배열
  4. 배열 vs. 포인터 비교
'컴퓨터시스템구조' 카테고리의 다른 글
  • [컴퓨터시스템구조] 17. 부동 소수점
  • [컴퓨터시스템구조] 16. 컴퓨터 산술(mult, mfhi, mflo, mul, div)
  • [컴퓨터시스템구조] 14. MIPS Sort
  • [컴퓨터시스템구조] 13. MIPS 동기화
파스텔코랄
파스텔코랄
Developer Blog 📜 Lots of rules and no mercy ✨
슬기로운 개발일지Developer Blog 📜 Lots of rules and no mercy ✨
파스텔코랄
슬기로운 개발일지
파스텔코랄
전체
오늘
어제
  • 스터디
    • 컴퓨터시스템구조
    • 모바일프로그래밍
    • 프로그래밍언어론
    • 운영체제
    • 컴퓨터네트워크
    • 데이터분석
    • 소프트웨어공학
    • 시스템프로그래밍

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • About

링크

공지사항

인기 글

태그

프로그래밍언어론
네트워크
운영체제
어셈블리어

최근 댓글

최근 글

hELLO· Designed By정상우.v4.6.1
파스텔코랄
[컴퓨터시스템구조] 15. MIPS 배열 vs. 포인터
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.