负面地址在集会中意味着什么?

时间:2011-03-25 02:32:21

标签: assembly

0xffffffff8100b9e4: callq  *-0x7ec55ec0(,%rax,8)

*-0x7ec55ec0在这里意味着什么?

3 个答案:

答案 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位有效),但结果地址当然是无符号的。