Автор Тема: objdump  (Прочитано 1160 раз)

Оффлайн goshka

  • Завсегдатай
  • *
  • Сообщений: 114
    • Email
objdump
« : 18.08.2011 09:33:34 »
Можно ли дизассемблировать при помощи gcc объектный файл в формат, в текстовом формате,  пригодном  для последующего ассемблирования.

Необходимо пере-собрать файл из  .a библиотеки.

Дизассемблирование / корректировка / ассемблирование

objdump выдает дизассемблерный листинг в формате, который долго править вручную:  :(

cpu.o:   
Диассемблирование раздела .text:

00000000 <cpuContextInit>:
   0: 00a62821 addu a1,a1,a2
   4: fc850040 sd a1,64(a0)
   8: fc850048 sd a1,72(a0)
   c: 3c080000 lui t0,0x0
  10: 25080000 addiu t0,t0,0
  14: 8f890000 lw t1,0(gp)
  18: fc880050 sd t0,80(a0)
  1c: 03e00008 jr ra
  20: fc890058 sd t1,88(a0)

00000024 <cpuContextSwitch>:
  24: 1080000e beqz a0,60 <cpuContextSwitch+0x3c>
  28: 00000000 nop
  2c: fc9f0050 sd ra,80(a0)
  30: fc9d0040 sd sp,64(a0)
  34: fc9e0048 sd s8,72(a0)
  38: fc900000 sd s0,0(a0)
  3c: fc910008 sd s1,8(a0)
  40: fc920010 sd s2,16(a0)
  44: fc930018 sd s3,24(a0)
  48: fc940020 sd s4,32(a0)
  4c: fc950028 sd s5,40(a0)
  50: fc960030 sd s6,48(a0)
  54: 40086000 mfc0 t0,$12
  58: fc970038 sd s7,56(a0)
  5c: fc880058 sd t0,88(a0)
  60: 10a00014 beqz a1,b4 <cpuContextSwitch+0x90>
  64: 00000000 nop
  68: 40096000 mfc0 t1,$12
  6c: dcb00000 ld s0,0(a1)
  70: dcb10008 ld s1,8(a1)
  74: 3129ff00 andi t1,t1,0xff00
  78: dcb20010 ld s2,16(a1)
  7c: dcb30018 ld s3,24(a1)
  80: dca80058 ld t0,88(a1)
  84: dcb40020 ld s4,32(a1)
  88: dcb50028 ld s5,40(a1)
  8c: 3c01ffff lui at,0xffff
  90: 342100ff ori at,at,0xff
  94: 01014024 and t0,t0,at
  98: dcb60030 ld s6,48(a1)
  9c: dcb70038 ld s7,56(a1)
  a0: dcbe0048 ld s8,72(a1)
  a4: dcbd0040 ld sp,64(a1)
  a8: dcbf0050 ld ra,80(a1)
  ac: 01094025 or t0,t0,t1
  b0: 40886000 mtc0 t0,$12
  b4: 03e00008 jr ra
  b8: 00000000 nop
...................................