2017-10-03 50 views
0

TC17 **アセンブラが "movh.a and lea"アドレッシング(16進数)をどのように処理するのか、私が自分で計算する方法"定数"または "グローバル"として定義されている私の画像に表示されます。Tricore "Constants"を逆アセンブルする

私がしたいことは、自分自身でこの32ビット命令を作成/組み立てることですが、最後の日には何も処理しません。確かに、私はEclipse Toolchainでアセンブルする方法を知っていますが、私のプログラムではこのツールチェーンを使用できません。私はPHPでプログラミングしていますが、実際にはこれは問題ではありません。一例として、

、ここでアセンブリに私が持っているコマンドのIDAproビューの画像です:32ビット六角命令として

screenshot of IDA-Pro

それは次のようになります。

ASM: movh.a a15, #@HIS(configuration_value_1) 
HEX: 91 70 01 F8 

ASM: lea a15, [a15]@LOS(configuration_value_1) 
HEX: D9 FF E4 67 

私が今したいことは、HEXアセンブラの命令を、変数に正しくアドレッシングして解決することです。この場合、その場所は "0x80177DA4"です。命令セットで

、そのは次のように説明した:あなたの問題を引き起こしている何

Screenshot: movh.a command
Screenshot: lea + long offset addressing mode

答えて

1

?すべてがあなたの写真に表示されます。ビットを抽出するのは簡単なことです。

リトルエンディアン形式の単語を再構成する方が簡単です。従って:

movh.a = F8017091。定数は実際には8017です(そこには驚きはありません)。 lea = 67E4FFD9これは愚かなエンコーディングのためにややこしいので、上位16ビットをバイナリに変換しましょう:0110 0111 1110 0100。今度は011111 0110 100100になるように並べ替え、16進数に戻します。7DA4

したがって、完全なアドレスは80177DA4です。

+0

お返事ありがとうございました。 これを投稿した後、再び16進数で表示し、movh.aの問題を理解する方法を見つけました。 ロードバイトコマンドで2日働いたので少し複雑すぎると思うかもしれません。 http://www.bilder-upload.eu/upload/ee9540-1506994269.png しかし、これは問題ではありません私はすでにld.buとmovh.aのことを考え出した。しかし、あなたが言ったように、leaコマンドは私のために少し難しいです。 私が必要とする値を得るためにビットをどのように並べ替える必要があるか、私はビット単位の操作で非常に愚かです。私は "試行錯誤"で動作します。 –

+0

Btwは16進数/アドレスを再度確認しました。 上記のヘビiは、明らかに0x80177DA4を指しています。再度コンパイルしてIDAに再度ロードし、0x80177DA4を指しています。D9 FF E4 67 Br –

+0

ええ、 「E」はもちろん「1100」ではなく「1110」である。 – Jester

関連する問題