我想了解这条线正在做什么
0x0000000000400f7e <+59>: jmpq *0x401be0(,%rax,8)
我们假设$ rax = 2.所以我们有* 0x401be0 +(8 * 2)。
* 0x401be0指向4198277.所以我们有4198277 + 16 = 4198293或0x400F95。
所以我期待代码跳转到0x400F95的指令。但它跳到0x400fc9。究竟发生了什么?
答案 0 :(得分:2)
代码从地址0x401be0+8*rax
的数据中读取64位值(代码地址)并跳转到读取的地址。