1

在 x86 GNU Assembler 中,与内存相关的操作有不同的后缀。例如:

movb, movs, movw, movl, movq, movt(?)

现在我的问题如下:

后缀是否对处理器如何从主内存中获取数据有任何影响,或者总是将一个或多个 32 位 (x86) 块加载到缓存中?

除了内存访问还有什么影响?

4

2 回答 2

3

它不影响内存访问的完成方式;唯一可以影响的是 CPU 数据总线的宽度。它所影响的只是数据操作的粒度。

于 2010-03-14T04:33:52.270 回答
2

这些不是“后缀”。您正在查看六个不同的机器指令。它们中的每一个都移动不同数量的数据。movb例如,只移动一个字节。


好的,我现在看到您在询问缓存。总是只有完整的高速缓存行被移动到高速缓存中。例如,如果缓存是 16 字节宽,那么 16 或 32 字节就是将从主内存中移动的内容(一或两条缓存线)。

但是,从缓存移入寄存器的内容取决于指令。

于 2010-03-14T04:33:52.820 回答