MIPS Assembler feactures, Byte order, word alignment

hello_hidi·2022년 10월 6일
0

Computer Architecture

목록 보기
7/7
post-thumbnail

MIPS assembler features(Appendix A.10)

  • 숫자는 10진수가 기본이며, 0x를 붙여서 16진수를 표현할 수 있다.
  • Strings은 쌍따옴표(" ")로 닫아야된다.
  • Special characters: \n, \t and \" -> 개행문자

Assembler directives

일부 작업을 수행하거나 설정을 변경하기 위한 어셈블러에 대한 지시이며, 어셈블러 지시문은 명령어를 나타내지 않으며 기계 코드로 변환되지 않는다. .으로 시작한다.

1) .ascii, .asciiz "some string"

각 문자별 아스키코드로 data를 저장한다.
asciiz -> 문자열을 저장하고 null까지 저장한다.

2) .space n

n개만큼 null을 저장

3) .byte, .half, .word, .float, .double d1,d2 ... dn

해당 타입의 byte만큼 자리를 배정한다.

4) .data<'addr'>

data segement의 시작을 알림
addr은 대부분 16진수의 메모리 주소이면 안 쓰면 임의로 배정해준다.

5) .text<'addr'>

text segement의 시작을 알림
addr은 대부분 16진수의 메모리 주소이면 안 쓰면 임의로 배정해준다.

6) .globl symbol

다른 파일에서도 해당 symbol에 접근 가능하게 해준다.

+) Comments & Labels

Comments : 주석이며 #을 통해 선언 가능
Labels: 레이블이며 :을 뒤에 붙혀서 사용 (뒤에서 더 자세히 다룰 예정)

Byte order

4개의 byte를 모아(.ascii, .asciiz도 포함) word로 만들때 2가지의 방식이 있다.

Big endian, Little endian

Big endian: 우리가 16진수를 읽는것처럼 순차적으로 메모리에 배열
Little endian: 우리가 읽는 것에 반대로 메모리에 배열

spim에서 오른쪽 부분은 byte단위로 보여주고
왼쪽 부분은 word 단위로 보여주는데 이때 little-endian 기준으로 보여준다
따라서 아래 그림처럼 정보를 해석해주면 된다.

word 단위로 저장할 땐 endian x

word값을 그대로 전달할때는 byte 단위로 읽어올 필요가 없으므로 굳이 말하자면 big endian처럼 순차적으로 메모리에 저장하면 된다.

word alignment

word를 저장할 때는 무조건 4의 배수로 시작한다

그래서 저장하고 남은 부분은 무조건 비워준다.

profile
안뇽희디

0개의 댓글