私は arm-linux-as を使用していくつかのアーム命令を組み立て、次のようなマシンコードを取得します。
// arm.txt
.code 32
MOV R0, SP
// command line
E:\armgen>arm-linux-as -ahlm -k -mthumb-interwork -march=armv7-a c:\arm.txt
ARM GAS c:\arm.txt page 1
1 .code 32
2 0000 0D00A0E1 MOV R0, SP
B、BL、BLX... については、次のように記述できます。
//arm.txt
.code 16
BLX .sub_xxx
.code 32
ADD R0, PC
ADD R0, PC
.sub_xxx: ADD R0, PC
// command line
E:\armgen>arm-linux-as -ahlm -k -mthumb-interwork -march=armv7-a c:\arm.txt
ARM GAS c:\arm.txt page 1
1 .code 16
3 0000 00F004E8 BLX .sub_xxx
5
6 .code 32
8 0004 0F0080E0 ADD R0, PC
10 0008 0F0080E0 ADD R0, PC
12 000c 0F0080E0 .sub_xxx: ADD R0, PC
しかし、このツールはジャンプ命令のオフセットをタグごとに自動計算するのですが、ジャンプのオフセットが大きい場合はどうすればいいのでしょうか? src と dst の間に非常に多くの命令をパディングしますか? 次のような書き込みオフセットのテストに失敗しました。
.code 16
BLX #0xce0
誰か道を教えてくれませんか...