0xffffffff8100b9e4: callq *-0x7ec55ec0(,%rax,8)
*-0x7ec55ec0
在这里意味着什么?
答案 0 :(得分:3)
在这种情况下,-0x7ec55ec0
只是写0xffffffff813aa140
的一种较短方式(换句话说,-0x7ec55ec0 + 0x10000000000000000
)。
据推测,该地址有一个跳转表,以rax
为索引。
如果有任何帮助,英特尔汇编语法中的相同指令是:
call qword ptr [0xffffffff813aa140 + rax*8]
答案 1 :(得分:2)
没有负面地址。地址是未签名的。
这意味着您使用高位设置的地址,并将其格式化为带符号的数字(或使用将其格式化为带符号的数字的方法)。
答案 2 :(得分:0)
“0x7ec55ec0”是负地址偏移。是的,它将从8 *%rax的值中减去。这个减法是在64位无符号等价的两个补码表示中添加“0xffffffff8100b9e4”。
大概%rax * 8的值将大于0x7ec55ec0,因此会产生代码或数据段通常范围内的值。
请注意,x86平台上的地址偏移确实始终是有符号的(8位和32位有效),但结果地址当然是无符号的。