1. ホーム
  2. assembly

[解決済み] movsbl 命令は何をするのですか?重複

2022-02-17 01:24:56

質問内容

ネットで検索してみたのですが、この命令が何をするものなのか、わかりやすい例が見つかりませんでした。そこで、どなたかこれに関する例を示していただけると、非常に助かります。

どのように解決するのですか?

バイトからロングワードへの符号拡張付き移動。インテル構文では、この命令のニーモニックはMOVSXです。

Cコンパイラは、この命令を、変数タイプが int8_t に変換する必要があります。 int これは、算術演算やその他のいくつかの演算(整数値の昇格)において自動的に行われます。

この命令は、出力レジスタの 32 ビット(または 64 ビット)すべてに書き込むため、レジスタの下位 8 ビット(または 16 ビット)のみに書き込む場合に生じる性能低下を回避することができます。同様の命令群により、0ビットでの拡張が可能です(インテル構文のMOVZX、AT&T構文のMOVZst(サイズsからサイズtまで))。