我正在尝试组装以下程序:
.text
.globl _search2
_search2:
pushq %rbp
movq %rsp, %rbp
movq %rax, -8(%rbp)
go_again:
cmpl $0x90909090, (%rax)
je go_out
addq $0x8, %rax
jmp go_again
go_out:
leave
ret
通过这样做:“gcc -o test test.s main.c”,我得到了这个:
otool -v -t 测试
_search2:
0000000100000d0c pushq %rbp
0000000100000d0d movq %rsp,%rbp
0000000100000d10 movq %rax,0xf8(%rbp)
go_again:
0000000100000d14 cmpl $0x90909090,(%rax)
0000000100000d1a je 0x100000d29
0000000100000d20 addq $0x08,%rax
0000000100000d24 jmp 0x200000d14
go_out:
0000000100000d29 leave
0000000100000d2a ret
jmp 试图跳转到完全错误的地址 0x200000d14,而不是标有 go_out 标签的 0x100000d29。
请帮忙。