harry_he 发表于 2009-05-18 18:26

powerpc 交叉编译器objdump生成的汇编,不太懂

如下,我用C写了一个小程序 (int c=a+b), 用交叉编译器gcc编译后生成test,然后用交叉编译器的objdump反汇编,生成如下结果,其中.long是什么意思啊?

00000000 <.debug_frame>:
   0:   00 00 00 0c   .long 0xc
   4:   ff ff ff ff   fnmadd. f31,f31,f31,f31
   8:   01 00 01 7c   .long 0x100017c
   c:   41 0c 01 00   bdnzt-4*cr3+lt,10c <_init-0x10000150>
10:   00 00 00 0c   .long 0xc
14:   00 00 00 00   .long 0x0
18:   10 00 04 5c   nmachhwo r0,r0,r0
1c:   00 00 00 04   .long 0x4
20:   00 00 00 2c   .long 0x2c
24:   00 00 00 00   .long 0x0
28:   10 00 04 60   vmhaddshs v0,v0,v0,v17
2c:   00 00 00 b4   .long 0xb4
30:   44 0e 30 44   .long 0x440e3044
34:   09 41 00 48   tdi   10,r1,72
38:   9e 02 58 9a   stbu    r16,22682(r2)
3c:   06 99 07 11   .long 0x6990711
40:   41 7f 48 9b   bdztla+ 4*cr7+so,4898 <_init-0xfffb9c4>
44:   05 48 9c 04   .long 0x5489c04
48:   4c 9f 01 9d   .long 0x4c9f019d
4c:   03 00 00 00   .long 0x3000000
Disassembly of section .gnu.attributes:

jzhang918 发表于 2009-05-18 20:47

回复 #1 harry_he 的帖子

.debug_frame 里并不是指令,而是 DWARF 调试信息的一部分,你可以用 readelf -wF 看

harry_he 发表于 2009-05-19 16:01

不好意思,贴的部分不对,这里才是正确的。我编译了一个汇编文件,里面就是一些汇编指令的罗列,用as生成二进制文件之后再用objdump -D来反汇编,结果如下:

Disassembly of section .text:

00000000 <start>:
   0:   4c 00 00 4e   .long 0x4c00004e
   4:   4c 00 00 cc   .long 0x4c0000cc
   8:   4c 1f f9 8c   .long 0x4c1ff98c
   c:   4f e0 01 8c   .long 0x4fe0018c
10:   7c 09 57 be   .long 0x7c0957be
14:   7c 00 69 dc   .long 0x7c0069dc
18:   7c 00 71 9c   .long 0x7c00719c
。。。

和PC上的结果差得太多,和原来的汇编语言也不一样

harry_he 发表于 2009-05-19 16:03

再次不好意思,用objdump -D时需要指定CPU类型,刚才忘了,真是笨

谢谢jzhang928
页: [1]
查看完整版本: powerpc 交叉编译器objdump生成的汇编,不太懂