0

私は 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

誰か道を教えてくれませんか...

4

0 に答える 0