首页 > 代码库 > AT&T jmpq指令
AT&T jmpq指令
(gdb) disassemble
Dump of assembler code for function _Znam@plt:
=> 0x0000000000400738 <+0>: jmpq *0x2006ba(%rip) # 0x600df8 <_Znam@got.plt>
0x000000000040073e <+6>: pushq $0x3
0x0000000000400743 <+11>: jmpq 0x4006f8
jmpq *0x2006ba(%rip) :
首先将rip值+0x2006ba=0x600df8,然后jmp 0x600df8; 特别注意这个*号并不是取地址符,而是表示跳转地址值前面的一个标志,解释如下:
http://www.cnblogs.com/yanghong-hnu/p/5700852.html:
常数/立即数的格式:
在AT&T语法中对立即数,须在其前加前缀 $ 来指明,而Inter语法则不需要。
另外, 在常数前也必须加一个前缀字符 * ,而Inter语法则也是不需要的。
5跳转 在 AT&T 汇编格式中,绝对转移和调用指令(jump/call)的操作数前要加上‘*‘作为前缀,而在 Intel 格式中则不需要。
6远跳转
远程转移指令和远程子调用指令的操作码,在 AT&T 汇编格式中为 "ljump" 和 "lcall",
所以,jmpq 操作数前的*仅仅是个符号而已
AT&T jmpq指令
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。