当我在汇编中写一些涉及跳跃的东西时,我会按照以下方式做点什么:
fucntion:
cmp $1, %rax
je cond
mov $0 %rdi
jmp end
cond:
mov $1, %rdi
end:
mov $60, %rax
syscall
问题在于,当我使用gdb并输入disas function
时,我只会在function
之前看到cond
。但是,如果我要写一个类似的c程序,反汇编程序中的跳转语句看起来像jmp ADDRESS <function+xx>
,键入disas function
将显示该函数的每一行。
如何使gdb与我的汇编程序的行为相似?汇编器或链接器是否有一个标志会使程序的跳转看起来更像c程序?或者我是否必须改变编写汇编的方式?基本上我只想输入disas function
并输出整个函数。
答案 0 :(得分:3)
正确的方法是指定功能的范围。 附加
.size function, . - function
最后。