[解決済み] テスト
質問
アセンブリ関数を読み込むためにgdbデバッガを使用しています。
アセンブリでは、次のような命令になっています。
mov 0xc(%rsp),%eax
jmpq *0x402390(,%rax,8)
メモリロケーションにて
*0x402390
という値があります。
0x8e
. レジスタ rax には、この特定の関数の 2 番目の整数入力があります(変数 y を使用することもできます)。
分析から、この関数は3つの変数を取り込むことがわかりました。
(x, y, z)
であり、それらはメモリロケーション
(rsp)
,
(rsp + 8)
,
(rsp + 12)
をそれぞれ作成します。
を知りたいのです。
jmpq *0x402390(,%rax,8)
.
での命令にジャンプしているのでしょうか?
(0x8e + rax*8)
? もしそうなら、その命令の名前をどうやって調べればいいのでしょうか?
これは、関数phase_3のアセンブラコードのフルダンプです。
解決方法は?
からの GAS-マニュアル :
インテル® シンタックスの間接メモリ参照。
section:[base + index*scale + disp]
はAT&Tの構文に変換されます。
section:disp(base, index, scale)
ここで、base と index はオプションの 32 ビットベースレジスタとインデックスレジスタです。 disp はオプションのディスプレースメント、scale は値 1、2、2 をとります。 4、8 は、インデックスを乗算してオペランドのアドレスを計算する。
( https://sourceware.org/binutils/docs/as/i386_002dMemory.html#i386_002dMemory )
というわけで、以下のように翻訳することができます。
jmpq *0x402390(,%rax,8)
を INTEL 構文で表現すると、jmp [RAX*8 + 0x402390] となります。これは間接ジャンプです。RAX*8 + 0x402390] のアドレスが
jmp
. 次に、0x402390 + x にいくつのアドレスがあるか、どのような場合にそれらを使用するかを決定します。
関連
-
[解決済み] WAWハザードとは?
-
[解決済み] x86 - C言語のsscanf関数
-
[解決済み] MIPSプログラムの中で`lw`と`sw`が実際にどのように機能するかを理解する
-
[解決済み] Binary Bomb Phase_6 Node Order?
-
[解決済み] CPUのParity Flagは何のためにあるのですか?
-
[解決済み] ARMはSDIVとUDIVを区別していますが、ADD、SUB、MULでは区別していないのはなぜですか?
-
[解決済み] ARMアセンブリループ
-
[解決済み] linuxのsys_readシステムコールを作ると、レジスタeaxに何が入るのでしょうか?
-
[解決済み] CS:IPの組み立ての意味と仕組みについて教えてください。
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】なぜMIPS用のsubiオペコードは存在しないのですか?
-
[解決済み] Lc3分割のしくみ
-
[解決済み] MIPS分岐実行順序(beqz)
-
[解決済み] なぜSet on Less ThanはALU演算なのか?
-
[解決済み] x86 8086 アセンブリで 0-9 の範囲の乱数を生成する。
-
[解決済み] ビットシフト演算子を使って10進数を2進数で表示するMIPS
-
[解決済み] cmovlオペコードの中で何と何が比較されるのですか?
-
[解決済み] SRLとSRAの違いは何ですか?[重複しています]。
-
[解決済み] MIPSプログラムにおける`lw`と`sw`の実際の働きを理解する。
-
[解決済み] インテルアセンブリの%ripレジスタを理解する