1. 程式人生 > >AT&T jmpq指令

AT&T jmpq指令

at&t jmpq指令

(gdb) disassemble

Dump of assembler code for function [email protected]:

=> 0x0000000000400738 <+0>: jmpq *0x2006ba(%rip) # 0x600df8 <[email protected]>

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指令