看完这道题的答案的时候,看到第4行的指令觉得非常困惑,
使用 movl $0, %edx 第一反应是为什么只将低4位置0。
后面才发现,其实是将%rdx寄存器全部置零了,不仅仅是低4位,只是这个指令有隐藏的含义。
movl 其实相当于 movzlq(真正的指令没有movzlq,因为movl就已经实现了) 这一技术利用的属性是,生成4个字节值并以寄存器作为目的指令会把高4字节置为0。

深入了解计算机系统-第三版-练习题3.12 无符号除法
最新推荐文章于 2023-05-17 22:42:07 发布
本文针对movl$0,%edx指令进行了深入解读,澄清了该指令不仅将低4位置零,实际上将整个%rdx寄存器清零。通过解释movl指令等价于movzlq的特性,说明了当向寄存器写入4字节值时,其高4字节自动被置为0。
1671

被折叠的 条评论
为什么被折叠?



