如何在powerpc汇编程序中操作程序计数器

时间:2011-09-13 10:21:12

标签: assembly powerpc

powerpc汇编程序中该指令的结果是什么?

. = 0x100

我认为这涉及程序计数器,但是反汇编使用此指令的可执行文件在输出中发生了奇怪的事情。 这是简单的代码:

int main()
{
   __asm__(". = 0x100");
   return 0;
}

这是反汇编的代码:

$ gcc -o prog main.c 
$ objdump -d prog

[...]
100003dc <main>:
100003dc:       94 21 ff f0     stwu    r1,-16(r1)
100003e0:       93 e1 00 0c     stw     r31,12(r1)
100003e4:       7c 3f 0b 78     mr      r31,r1
    ...
100004dc:       38 00 00 00     li      r0,0
100004e0:       7c 03 03 78     mr      r3,r0
100004e4:       81 61 00 00     lwz     r11,0(r1)
100004e8:       83 eb ff fc     lwz     r31,-4(r11)
100004ec:       7d 61 5b 78     mr      r1,r11
100004f0:       4e 80 00 20     blr
[...]

根据该指令,出现了三个点。他们是什么意思? GAS如何描述这一点?

谢谢大家!

1 个答案:

答案 0 :(得分:1)

正确猜测,

.会设置当前的位置计数器。在您的示例中,您已将位置计数器设置为main()+0x100,即0x100003dc+0x100 = 0x100004dc。在0x100003e4到地址0x100004dc的指示之后,将没有有效的说明(您通常会在这里进行分支)。