cltq在组装中实际上做什么?

问题描述

我想了解一些汇编代码

   0x0000000000401024 <+55>:    mov    $0x0,%ecx                                    
   0x0000000000401029 <+60>:    mov    $0x0,%edx                                    
   0x000000000040102e <+65>:    add    $0x1,%edx              
   0x0000000000401031 <+68>:    cltq   
   0x0000000000401033 <+70>:    mov    0x402360(,%rax,4),%eax       

但是我很难真正理解这段代码。我读到cltq将4字节字转换为8字节字。这总是用于eax和rax吗?因此,从本质上讲,rax充满了eax并考虑了符号,而rax中的其他信息也丢失了。这是正确的吗?

此外,下一行代码的结果是什么?我认为%rax中的值乘以4并加到0x402360,然后将与该地址对应的值放入eax。

我在想什么错,什么是对的?谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)