2

x86 アセンブリの 32 ビット レジスタのサブセクションに関して質問があります。レジスタの下位サブセクション (使用されている場合) は、対応する 32 ビット レジスタの一部のように扱われますか?

ロール cl,2    
ロール cl,2
ecxをプッシュ
ポップイークス

上記のコード セクションを例にとると、レジスタCLのサブセクションであるため、ECXレジスタの内容をスタックにプッシュすると、CLサブセクションにあったものもスタックにプッシュされますか? それとも別々に扱われますか?

そして、スタックをレジスターにポップすると、以前からレジスターEAXにあったものがレジスターに入るでしょうか? CLEAX

4

1 に答える 1

5

ECXレジスタのCX下部には、下の図に示すようにCHとが含まれCLています。に保存されている値を変更する場合CL、 と も変更CXしますが、 は変更しECXませんCH

質問に答えるには:

Q: レジスタ [ ECX] の内容をスタックにプッシュすると、CLサブセクションにあったものもスタックにプッシュされますか? それとも別々に扱われますか?
A:すべて一発で。CLの一部ですECXCLの一部にアクセスするためにプロセッサによって提供される方法にすぎませんECX

Q: 次に、スタックをレジスターにポップすると、以前からレジスターEAXにあったものがレジスターに移動するとしますか? CLEAX
A:はい。より正確には、 にあったものは にCL入りALます。

ここに画像の説明を入力

出典:パズルを解くことによるレジスタ割り当てに関するチュートリアル(compilers.cs.ucla.edu)

于 2013-04-08T09:17:37.307 に答える