assembly - 我可以在现代系统上的汇编中使用 movl 代替 movb 或 movw 吗?

标签 assembly x86 cpu-architecture micro-optimization mov

我正在学习如何在汇编中编程,我有一个澄清问题。在我的书中,它充分说明了将正确的后缀与命令结合使用的重要性。然而,在类里面老师只使用了“movl”操作数。我的老师这样做是为了简单起见还是“movb”和“movw”命令近年来已经过时了?例如,在 char 类型上使用 movl(而不是 movb)时,效率是否会降低?它还能起作用吗? 谢谢

更新:我正在谈论 x86-64 汇编

最佳答案

这个问题与哪种架构相关?

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

关于assembly - 我可以在现代系统上的汇编中使用 movl 代替 movb 或 movw 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26455799/

相关文章:

c# - 针对 x86 和 x64 的设置?

c++ - 在c++中使用x86 DIV的asm block 有什么用?

c - 测试状态位

windows - 全局描述符表

assembly - 汇编指令数据库?

parallel-processing - 英特尔刚刚推出了一款新的 48 核 CPU。向多核迁移对我们程序员意味着什么?

iphone - armv6和i386有什么区别?

linux - 通过 ASM (x86) 处理系统调用(需要 ebp)

c++ - 为什么C++内联函数有调用指令?

c - 获取 x86-64 指令的大小