-
AT & T 문법프로젝트/운영체제 만들기 2023. 7. 15. 02:05
글의 참고
- https://onecellboy.tistory.com/50
글의 전제
- 밑줄로 작성된 글은 강조 표시를 의미한다.
- 그림 출처는 항시 그림 아래에 표시했다.
글의 내용
상수(constant)와 immediate 값 : 모든 상수와 immediate 값에는 $가 붙는다. 예를 들어 숫자 5를 나타내려면 $5라고 한다. 변수의 주소를 나타낼 때에도 앞에 $를 붙인다. 예를 들어 foo란 변수의 주소는 $foo이다. 그냥 foo라고 하면 변수의 값을 나타내게 된다. foo 변수의 주소를 eax 레지스터로 복사하는 것은 :
AT&T : movl $foo, %eax
Intel : mov eax, foofoo의 값을 eax 레지스터로 복사하는 것은 :
AT&T : movl foo, %eax
Intel : mov eax, [foo]숫자 0xd00d를 eax 레지스터로 복사하는 것은 :
AT&T : movl $0xd00d, %eax
Intel : mov eax, 0d000h이는 base + index * scale + immed32 주소를 나타내게 된다. 이들 모두를 반드시 지정해야 하는 것은 아니지만 immed32나 base 중의 하나는 반드시 지정해야 한다. 주소 지정의 예를 들어보자. eax 레지스터가 가리키는 주소의 값을 참조하는 경우 :
AT&T : (%eax)
Intel : [eax]레지스터에 변수(var)의 옵셋을 합한 주소를 참조하는 경우 :
AT&T : var(%eax)
Intel : [eax + var]'프로젝트 > 운영체제 만들기' 카테고리의 다른 글
[xv6] Scheduling (0) 2023.07.17 [xv6] Spinlock (0) 2023.07.17 xv6 - System Call & Traps (0) 2023.07.12 xv6 - Init process (0) 2023.07.12 [xv6] Page tables 상세 분석 1 (0) 2023.07.12