.text
call start
str:
.string "test\n"
start:
movl $4, %eax
movl $1, %ebx
pop %ecx
movl $5, %edx
int $0x80
ret
gcc -c test.S
给出:
test.S: Assembler messages:
test.S:8: Error: suffix or operands invalid for `pop'
答案 0 :(得分:2)
pop只是命令。在at& t语法中,您必须推迟操作数维度。所以你必须用“popl”改变“pop”行
修改强>
答案 1 :(得分:1)
您可能正在尝试编译32位程序集的64位系统。强制gcc使用 -m32 编译32位:
gcc -m32 -c test.S
修改强>
64位版本:
.text
call start
str:
.string "test\n"
start:
movl $1, %eax
movl $1, %edi
popq %rsi
movl $5, %edx
syscall
movl $60,%eax
movl $0, %edi
syscall