質問

このアーキテクチャでのアセンブリ用の新しいレジスタの名前はどこで確認できますか?

EAX、ESP、EBX などの X86 のレジスタを指します。しかし、私は64ビットで欲しいです。

C コードを逆アセンブルすると、e の代わりに r が表示されるのと同じではないと思います。

役に立ちましたか?

解決

古い 32 ビット レジスタは 64 ビットに拡張されました。 r レジスタ (rax, rbx, rsp 等々)。

さらに、いくつかの追加の汎用レジスタがあります r8 を通して r15 (たとえば) としてアクセスすることもできます r8d, r8w そして r8b (それぞれ下位の 32 ビット ダブルワード、16 ビット ワード、および 8 ビット バイト)。の b 接尾辞は AMD の元の命名法ですが、次のように書かれているのを見かけることがあります。 l (小文字 L)「下位バイト」。

私はどちらかを好む傾向があります b 自分自身にサフィックスを付けます (現在の下位バイトレジスタは al, bl, 、など) d/w = double/word 名前と l と誤解される可能性があります long. 。あるいはさらに悪いことに、数字 1, 、登録番号とは一体何なのかという疑問が生じます。 81 は :-)

古い 16 ビット レジスタの上位バイトは、多くの状況下で引き続きアクセスできます。 ah, bh, 、など(ただし、これは新しいものには当てはまらないようです) r8 を通して r15 レジスタ)。新しいものもいくつかあります 命令エンコーディング、 特に、 REX プレフィックスを使用すると、元の上位バイトにアクセスできなくなりますが、他のユーザーは引き続きそれらを自由に使用できます。

さらに、いくつかの新しい SSE レジスタがあります。 xmm8 けれど xmm15.

eip そして eflags レジスタも拡張されています rip そして rflags(ただし、上位 32 ビットは rflags 今のところまだ未使用です)。

を参照してください。 ウィキペディアのページ そして MSDN 詳細については。

これらがサポートされているかどうか asm 特定の C コンパイラのキーワードについては、私には言えませんでした。私が行う小さなアセンブリ (年に 1 日程度になりつつあります) は、C ではなくアセンブリで行われます。


関連している:

他のヒント

Intelのマニュアルを読んでみましょう

このアーキテクチャでのアセンブリ用の新しいレジスタの名前はどこで確認できますか。

プロセッサーのマニュアル『Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 1』には次のように記載されています。基本アーキテクチャ」、例: バージョン 253665-053US:

  • 「レジスター」を検索
  • 最初に一致するのはインデックス「3.4 BASIC PROGRAM EXECUTION REGISTER」です。
  • 「3.4.1.1 64ビットモードの汎用レジスタ」以下の2項目

そのセクションについて:

64 ビットのオペランド サイズが指定されている場合:RAX、RBX、RCX、RDX、RDI、RSI、RBP、RSP、R8-R15が利用可能です。R8D-R 15D/R8-R15は、8つの新しい汎用レジスタを表します。

リマインダー:64 ビット モードは、x86-64 の「通常」モードです。もう 1 つの主なモードは、IA32 をエミュレートする「互換モード」です。

目次で「レジスタ」を検索し続けると、マニュアル内に散在する浮動小数点および SIMD の「数値クラッシング」レジスタに関するセクションも見つかります。

  • 8.1.2 - x87 FPU データ レジスタ (STx)
  • 9.9.2 - MMX レジスタ
  • 10.2.2 - XMM レジスタ
  • 14.1.1 - 256 ビット幅 SIMD レジスタのサポート (YMM)

さまざまな副作用を伴う制御レジスタは他にもたくさんあり、それらの効果が必要な場合を除き、通常は書き込むことができません(多くの場合、 リング0が必要です)。これらは、OS開発者向けの「Volume 3 Systemプログラミングガイド-2.1.6システムレジスタ」にまとめられています。

良い経験的アプローチは、実行することです。 info all-registers GDB 内: GDB でレジスタ値を出力するにはどうすればよいですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top