728x90
반응형
어셈블리어 : 기계어와 일대일 대응되는 저급 언어
Intel | AT&T |
mov eax, 1 | movl $1, %eax |
lea ecx, [ebx+eax*2] | leal (%ebx, %eax,2), %ecx |
같은 문법이 Intel과 AT&T인가에 따라 달라짐
더보기
[ 어셈블리의 피연산자 ]
상수, 레지스터, 메모리 셋 중 하나이다
메모리에 접근하려면
TYPE PTR [레지스터 or 상수] 형태이다
ex) QWORD PTR [rax+8]
접미사
mov eax, 1 | movl $1, %eax |
intel의 경우 단순 명령어만 적지만, AT&T의 경우 해당 명령어가 어떤 크기의 명령어인지 나타낸다
예시를 보면, eax는 4바이트이므로 long이다.
[b] byte : 1byte
[w] word : 2byte
[l] long(double word) : 4byte
[q] quarter word : 8byte
Operand 위치
어셈블리어는 Opcode Operand1, Operand2의 형태로 구성된다
intel과 AT&T는 src와 dst의 순서가 반대이다
mov eax, 1 | movl $1, %eax |
1을 레지스터 eax로 옮기는 과정인 어셈블리 코드이다
상수와 레지스터
mov eax, 1 | movl $1, %eax |
intel의 경우, 레지스터와 상수를 구분하는 특정 문자가 없다
AT&T의 경우, 상수는 앞에 $ 표시를 하고 레지스터는 앞에 %표시를 한다
명령 계산 문법
lea ecx, [ebx+eax*2] | leal (%ebx, %eax,2), %ecx |
해당 코드는 모두 ebx의 값과 eax에 2를 곱한 값을 더한 것을 ecx에 옮긴다는 의미를 가지고 있다.
intel : [ base + index * scale + disp ]
AT&T : disp(base, index, scale)
의 형태로 이루어져 있다.
728x90
반응형
'CS > Computer Architecture' 카테고리의 다른 글
[Assembly] 데이터 이동 (0) | 2024.09.20 |
---|---|
Static Link vs Dynamic Link (0) | 2024.09.05 |
함수의 프롤로그 & 에필로그 (0) | 2024.08.22 |
Register (0) | 2024.08.16 |
Hardware Architecture - Single Processor (2) | 2024.07.01 |