x86 GNU Assembler では、メモリ関連の操作用にさまざまな接尾辞があります。例えば:
movb, movs, movw, movl, movq, movt(?)
今私の質問は次のとおりです。
サフィックスは、プロセッサがメインメモリからデータを取得する方法に何らかの影響を与えますか、それとも常にキャッシュにロードされる 1 つ以上の 32 ビット (x86) チャンクになりますか?
メモリアクセス以外の影響は何ですか?
x86 GNU Assembler では、メモリ関連の操作用にさまざまな接尾辞があります。例えば:
movb, movs, movw, movl, movq, movt(?)
今私の質問は次のとおりです。
サフィックスは、プロセッサがメインメモリからデータを取得する方法に何らかの影響を与えますか、それとも常にキャッシュにロードされる 1 つ以上の 32 ビット (x86) チャンクになりますか?
メモリアクセス以外の影響は何ですか?
メモリ アクセスの実行方法には影響しません。これに影響するのは、CPU のデータ バスの幅だけです。影響するのは、データに対する操作の粒度だけです。
それらは「接尾辞」ではありません。6 つの異なるマシン命令を見ています。それぞれが異なる量のデータを移動します。movb
たとえば、1バイトだけ移動します。
わかりました、あなたがキャッシュについて尋ねていたことがわかりました。フル キャッシュ ラインのみがキャッシュに移動されることは常にあります。たとえば、キャッシュの幅が 16 バイトの場合、16 または 32 バイトがメイン メモリから移動されます (1 つまたは 2 つのキャッシュ ライン)。
ただし、キャッシュからレジスタに移動するものは命令によって異なります。