假设cpu读取了一个截断整数的单词。 我已经读过,如果未启用结构填充,CPU将必须进行两次读取:必须先读取前半部分,然后分别读取后半部分,然后将它们重新组装在一起以进行计算。
cpu如何注意到整数(例如)已被截断?
答案 0 :(得分:1)
这取决于CPU以及编译器将生成的指令。一些CPU会很乐意执行未对齐的负载(基本上,它们会读取两个部分并为您重新组合)。有些会静默返回损坏的数据,有些会生成异常并导致您的程序立即崩溃。有时,CPU会有多个指令可以加载和存储数据,有些指令允许未对齐的访问,有些指令则不允许。
找出CPU上正在发生的事情的最好方法是对其进行测试。或者,查看由编译器生成的程序集,然后在CPU手册中查找这些程序集指令,以了解其功能。
如果您使用Intel或AMD CPU,请参见以下问题以获取更多信息:What's the actual effect of successful unaligned accesses on x86?