invalid instruction suffix when assembling x86 assembly with as -
i wrote assembly program assemble as --32 when use pushl , popl in following code snippet:
printhelloworld: movl $10, %ecx printtentimes: pushl %ecx movl $4, %eax movl $1, %ebx leal helloworld, %ecx movl $14, %edx int $0x80 popl %ecx loop printtentimes jmp exitcall but when tried assembly 64-bit machines, following error:
conditionalbranching.s: assembler messages: conditionalbranching.s:51: error: invalid instruction suffix `push' conditionalbranching.s:57: error: invalid instruction suffix `pop' so change pushl , popl pushq , popq, following error:
conditionalbranching.s: assembler messages: conditionalbranching.s:51: error: operand type mismatch `push' conditionalbranching.s:57: error: operand type mismatch `pop' how remove error , assemble 64-bit?
i think you're still trying push 32-bit eax rather having upgraded instruction correctly to:
pushq %rax that's based on fact error message complaining operand type mismatch rather suffix.
as per intel documentation, 32-bit register push instruction not encodable in 64-bit mode:

Comments
Post a Comment