Hongfluenza

[System] Intel과 AT&T 어셈블리어 문법 본문

STUDY/SYSTEM

[System] Intel과 AT&T 어셈블리어 문법

Hongfluenza 2018. 4. 9. 15:39

어셈블리어는 Intel 과 AT&T

두 가지의 문법을 가지고 있다.



1. 접두사 규칙


#Intel


어떠한 접두사, 접미사가 붙지 않는다.

16진수 'h'

2진수 'b'

6진수 '0'을 접두사로 사용한다.



#AT&T


'%' 접두사

'$' 접두사



EX)

intel 문법

AT&T 문법


mov eax,1

mov #1, %eax


mov ebx, 0ffh

movl $0xff, %ebx


int 80h

int $0x80



2. 오퍼랜드(operand)의 위치


Intel과 AT&T의 문법에서 오퍼랜드의 위치는

서로 정반대로 사용된다.


#Intel


목적지(destination),원본(source) 


#AT&T


원본(source), 목적지(destination) 



EX)

intel 문법

AT&T 문법


instr dest, source

instr source, dest


mov eax, [ecx]

mov %ecx, %eax

3. 메모리 오퍼랜드


#Intel


기본 레지스터(base register) 는 '[' 와 ']' 사이에 놓인다.


#AT&T


기본 레지스터(base register) 는 '(' 와 ')' 사이에 놓인다.


EX)

intel 문법

AT&T 문법


mov eax, [ebx]

movl (%ebx), %eax


mov eax, [ebx+3]

movl 3(%ebx), %eax


4. 접미사


#Intel


접미사를 사용하지 않고 의미있는 문장 그대로 사용한다.


byte, ptr, word ptr, dword ptr와 같이 사용한다.


"dword"는 "long"과 같은 크기를 가진다.


#AT&T


정해진 접미사 규칙을 따른다.


각각의 접미사는 고유의 의미를 가지고 있으며,


접미사에 따라서 오퍼랜드의 크기도 정해진다.



'STUDY > SYSTEM' 카테고리의 다른 글

8086 CPU 레지스터 구조  (0) 2019.08.11
setvbuf 함수  (0) 2018.04.30
함수 호출 규약(Calling Convention)  (0) 2018.04.09