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を取得できますか?