在x86 GNU汇编程序中,内存相关操作有不同的后缀。 E.g:
movb, movs, movw, movl, movq, movt(?)
现在我的问题如下:
后缀是否会对处理器如何从主内存中获取数据产生影响,或者总是将一个或多个32位(x86)块加载到缓存中?
内存访问有什么影响?
答案 0 :(得分:3)
它不影响内存访问的完成方式;唯一可以影响的是CPU数据总线的宽度。它影响的只是数据操作的粒度。
答案 1 :(得分:2)
那些不是“后缀”。您正在查看六种不同的机器指令。它们中的每一个都移动不同数量的数据。例如,movb
仅移动一个字节。
好的,我现在看到你在询问缓存了。始终只有完整的缓存行被移动到缓存中。例如,如果高速缓存是16字节宽,那么将从主存储器(一个或两个高速缓存行)移动16或32个字节。
然而,从缓存移动到寄存器的内容取决于指令。