我可以在现代系统的Assembly中使用movl而不是movb或movw吗



我正在学习如何在Assembly中编程,我有一个澄清问题。在我的书中,它充分说明了将正确的后缀与命令结合使用的重要性。然而,在课堂上,老师只使用了"movl"操作数。我的老师这样做是为了简单,还是"movb"one_answers"movw"命令近年来已经过时了?例如,当在char类型上使用movl而不是movb时,效率会损失吗?它会起作用吗?感谢

更新:我说的是x86-64组件

这个问题与什么样的体系结构有关

例如,在现代x86上,使用mov[b/w]加载会由于部分寄存器更新而导致性能下降(防止寄存器重命名/扩展依赖链)。使用movzx/movsx对全尺寸寄存器进行零/符号扩展以防止这种情况发生。

在更高级别的语言中,使用整数与使用字符是相当的。它们并不是过时的,但在小示例中,小数字是否存储为32位字或字节并不重要。但是,如果您操作字符串,我强烈建议您使用字节。(或者您可能不小心覆盖了一些相邻的字符。)

最新更新