码迷,mamicode.com
首页 > 其他好文 > 详细

AT&T jmpq指令

时间:2017-07-13 13:29:03      阅读:836      评论:0      收藏:0      [点我收藏+]

标签: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指令

标签:at&t jmpq指令

原文地址:http://1038741.blog.51cto.com/1028741/1947058

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!