내가 쓴 : 내가 달러 기호가없는 상수 참조는 고유 한 의미입니까?
mov $60, %rax
이러한 두 통화 사이의 차이가
를 작성해야하지만mov 60, %rax
GNU as
이 그것을 가능?
내가 쓴 : 내가 달러 기호가없는 상수 참조는 고유 한 의미입니까?
mov $60, %rax
이러한 두 통화 사이의 차이가
를 작성해야하지만mov 60, %rax
GNU as
이 그것을 가능?
예; 첫 번째는 주소 60의 메모리에 저장된 값을로드하고 결과는 rax
에 저장하고 두 번째는 즉시 값 60을 rax
에 저장합니다.
그냥 시도 ...
mov 60,%rax
mov $60,%rax
mov 0x60,%rax
0000000000000000 <.text>:
0: 48 8b 04 25 3c 00 00 mov 0x3c,%rax
7: 00
8: 48 c7 c0 3c 00 00 00 mov $0x3c,%rax
f: 48 8b 04 25 60 00 00 mov 0x60,%rax
16: 00
Ewww! 역사적으로 달러 기호는 16 진수 $ 60 = 0x60을 의미했지만 가스도 어셈블리 언어를 망쳐 놓은 역사를 가지고 있습니다 ... 그리고 역사적으로 x86 어셈블리 언어는 60h로 16 진수를 나타낼 수 있었지만 그렇게했을 때 오류가있었습니다.
그래서 달러 한숨이 있거나 없으면 다른 지시를받습니다.
0x8B는 등록 할 레지스터/메모리이며 0xC7은 즉시 등록합니다. 그래서 davmac는 mov 60에 응답했고, % rax는 등록 할 mov 메모리 위치이고, mov $ 60, % rax는 등록 즉시 mov입니다.
"Intel"이라고하는 인간이 선호하는 구문에서는 'mov rax, 60'('$'case in gas) (btw'mov eax, 60'도 똑같이 할 것입니다) vs'mov rax, [60]'(''$''이 없다면) ... 내가 가스/at & t 구문을 왜 싫어하는지 추측하려고 할지도 모른다. – Ped7g