Hardner

Intel 과 AT&T 차이점 본문

Computer/System

Intel 과 AT&T 차이점

Hardner 2018. 4. 25. 18:53

Intel, AT&T 어셈블리어 문법 차이점



어셈블리언어는 Intel과 AT&T 두 가지 문법을 가지고 있다.

서로 호환되지 않는 문법이기 때문에 코드 해석에 어려움을 겪을 수 있다.

각 문법의 차이에 대한 기본적인 이해를 한다면, 도움이 될 것이다.


Intel 문법은 대체로 간단하고, 접두사나 접미사가 붙지 않지만,

16진수와 2진수 데이터에는 각각 'h'와 'b' 접두사를 가진다.

AT&T 문법레지스터는 '%' 접두사를 가지며 값들은 '$' 접두사가 붙는다.



[ 접두사 규칙 ]

Ex)

Intel 문법
AT&T 문법



mov eax, 1

movl #1, %eax



mov ebx, 0ffh

movl $0xff, %ebx



int 80h

int $0x80


[ 오퍼랜드(Operands) 위치 차이 ]


Intel 문법은 목적지(destination) 오퍼랜드가 앞, 원본(source) 오퍼랜드가 뒤 이다.


Ex)


Intel 문법

AT&T 문법



instr dest, src

instr src, dest



mov eax, [ecx]

movl %ecx, %eax


[ 메모리 오퍼랜드 ]


Intel 문법의 경우 기본 레지스터는 '['와 ']' 사이에 넣고,

AT&T 문법은 '('와 ')' 사이에 놓는다.


Ex)


Intel 문법

AT&T 문법



mov eax,[ebx]

movl (%ebx), %eax



mov eax, [ebx+3]

movl 3(%ebx), %eax


[ 접미사 규칙 ]

AT&T 문법의 경우 정해진 접미사 규칙을 따르고, 각각의 접미사는 고유의 의미를 가지고 있다.
접미사에 따라서 오퍼랜드의 크기도 정해진다.
'l'은 long, 'w'는 word, 'b'는 byte를 저장하기 위해서 각각 사용된다.

Intel 문법은 접미사를 사용하지 않고 의미있는 문장을 그대로 사용한다.
ex byte ptr, word ptr, dword ptr 등으로 사용됨.(dword는 long과 같은 크기를 가짐.)

Ex)

Intel 문법
AT&T 문법


mov al, bl
movb %bl, %al


mov ax, bx
movw %bx,  %ax


mov eax, ebx
movw %ebx, %eax



mov eax, dword ptr[ebx]

movl (%ebx), %eax


내용 출처: https://m.blog.naver.com/PostList.nhn?blogId=ryutuna

'Computer > System' 카테고리의 다른 글

RAID(복수 배열 독립 디스크)이란?  (0) 2019.08.19
함수 호출 규약  (0) 2018.04.09