Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 不同CPU上未对齐的MOVSD会发生什么情况?_Assembly_X86_X86 64_Sse2 - Fatal编程技术网

Assembly 不同CPU上未对齐的MOVSD会发生什么情况?

Assembly 不同CPU上未对齐的MOVSD会发生什么情况?,assembly,x86,x86-64,sse2,Assembly,X86,X86 64,Sse2,基本上问题是这样的,如果我在不同的CPU上执行一个不是8字节(甚至4字节)对齐的MOVSD,会发生什么?它是否会对性能产生影响,是否会出现故障等?摘自《英特尔规范》第1卷第4.1节 4.1.1字对齐、双字对齐、四字对齐和双四字对齐 字、双字和四字不需要在内存中对齐 在自然边界上。单词的自然边界,双重单词, 四字是偶数地址,地址可以等分 被4整除,地址可分别被8整除。 然而,为了提高程序的性能,数据结构 (尤其是堆叠)应在自然边界上对齐(如果有) 可能的原因是处理器需要两个 内存访问以进行未对齐的

基本上问题是这样的,如果我在不同的CPU上执行一个不是8字节(甚至4字节)对齐的MOVSD,会发生什么?它是否会对性能产生影响,是否会出现故障等?

摘自《英特尔规范》第1卷第4.1节

4.1.1字对齐、双字对齐、四字对齐和双四字对齐

字、双字和四字不需要在内存中对齐 在自然边界上。单词的自然边界,双重单词, 四字是偶数地址,地址可以等分 被4整除,地址可分别被8整除。 然而,为了提高程序的性能,数据结构 (尤其是堆叠)应在自然边界上对齐(如果有) 可能的原因是处理器需要两个 内存访问以进行未对齐的内存访问;对齐访问 只需要一次内存访问。一个字或双字操作数 跨越4字节边界或跨越8字节边界的四字操作数 边界被认为是未对齐的,需要两条独立的内存总线 访问周期

在“正常”情况下,未授权的movsd需要2个周期才能完成


如果打开对齐检查(在EFLAGS中),CPU将发出交流信号。它主要用于帮助您检测未对齐的访问。

您是否尝试阅读文档?