나는 다음과 같은 어셈블리를 컴파일하기 위해 노력하고있어에 대한 피연산자 크기 불일치 ...오류 :`movq '
movq $0x3534373536383235, 0x000000000055638f8
movq $0x55638f8, %rdi
retq
첫 라인은 이해가되지 않습니다 오류 Error: operand size mismatch for 'movq'
를 던졌습니다 왜냐하면 둘 다 8 바이트 숫자이기 때문입니다.
이 나는 약간의 연구와movabsq
는
movabsq $0x3534373536383235, 0x000000000055638f8
movq $0x55638f8, %rdi
retq
...과 같이, 추천되었다 그러나 이것은 오류가 발생 않았다 Error: operand size mismatch for 'movabs'
내가 놓치고 무엇을? 당신은 (일반적으로 인정 하듯이,이다, 협박 비트)를 보조 정리 MOV
아래의 설명서에 보면
가 여기 내 맥
level3.s:1:27: error: invalid operand for instruction
movq $0x3534373536383235, 0x000000000055638f8
^~~~~~~~~~~~~~~~~~~
가능한 [movq 및 64 비트 숫자] (http://stackoverflow.com/questions/19582654/movq-and-64-bit-numbers) – AnT
[AnT 's link] (https://stackoverflow.com/)의 가능한 복제본 질문/19582654/movq-and-64-bit-numbers)는 질문이 혼란 스럽거나 깨져서 훌륭한 dup 대상이 아닙니다 :'movq $ 0xffffffffffffffff, -8 (% rbp)'는 부호 확장 32 비트 즉각적인, 그리고 다른 문제, 그 질문에 대한 내 의견을 참조하십시오. –