avr-objcopyを使用して逆アセンブルしたバイナリファイルがあります。割り込みベクタテーブルは次のようになります。
00000000:
; VECTOR TABLE
0:13c0rjmp。+38; 0x28、リセット
2:b8c1rjmp。+880; 0x374、INT0
4:fd cf rjmp .-6; 0x0
6:fc cf rjmp .-8; 0x0
8:fb cf rjmp .-10; 0x0
a:fa cf rjmp .-12; 0x0
c:f9 cf rjmp .-14; 0x0
e:f8 cf rjmp .-16; 0x0
10:f7 cf rjmp .-18; 0x0
12:c7c1rjmp。+910; 0x3a2、TIMER1 OVF
14:f5 cf rjmp .-22; 0x0
16:f4 cf rjmp .-24; 0x0
18:f3 cf rjmp .-26; 0x0
1a:f2 cf rjmp .-28; 0x0
1c:2bc2rjmp。+1110; 0x474、ADC変換が完了しました
1e:f0 cf rjmp .-32; 0x0
20:ef cf rjmp .-34; 0x0
22:ee cf rjmp .-36; 0x0
24:ed cf rjmp .-38; 0x0
26:00 00 nop
; 始める
28:f8 94 cli
(をちょきちょきと切る)
いくつかの変更を加えて、このファイルを再構築したいと思います。最初の2列を削除して、通常のアセンブリファイルになるように再フォーマットしました。すなわち:
.org 0
rjmp。+38; 0x28、リセット
rjmp。+880; 0x374、INT0
(をちょきちょきと切る)
しかし、私が走ると
$ avr-as -mmcu = atmega8 test.asm
次に、生成されたファイルを逆アセンブルします。(objcopy -S a.outを使用)出力は次のようになります。
00000000: 0:00c0rjmp。+0; 0x2 2:00c0rjmp。+0; 0x4 4:00c0rjmp。+0; 0x6 6:00c0rjmp。+0; 0x8 8:00c0rjmp。+0; 0xa a:00c0rjmp。+0; 0xc c:00c0rjmp。+0; 0xe e:00c0rjmp。+0; 0x10 10:00c0rjmp。+0; 0x12 12:00c0rjmp。+0; 0x14 14:00c0rjmp。+0; 0x16 16:00c0rjmp。+0; 0x18 18:00c0rjmp。+0; 0x1a 1a:00c0rjmp。+0; 0x1c 1c:00c0rjmp。+0; 0x1e 1e:00c0rjmp。+0; 0x20 20:00c0rjmp。+0; 0x22 22:00c0rjmp。+0; 0x24 24:00c0rjmp。+0; 0x26 26:00 00 nop 28:f8 94 cli (をちょきちょきと切る)
では、PC相対ジャンプを尊重するために、どうすればavrを取得できますか?