gpt4 book ai didi

汇编 64 位 - movl、movq。换车好吗?

转载 作者:行者123 更新时间:2023-12-03 22:58:23 27 4
gpt4 key购买 nike

语境:
在 64 位 linux 上学习 GAS 汇编。
许多教程是针对 32 位汇编的。
很难通过 x86_64 程序集进行丛林攻击。
题:
当我用gcc编译c程序时,我仍然看到一些%eaxmovl .
我主要玩int32_t .
但我认为必须使用 x86_64 上的 64 位指令。 (如 raxrbx 等)。
我不太明白。他们不应该是%raxmovq ?
在我的汇编程序中,我应该使用 movq , 对 ?即使是 32 位整数?
我是一个迷失的初学者。
谢谢

最佳答案

您可以在 64 位模式下使用 32 位寄存器和指令,就像您也可以使用 16 或 8 位一样。要记住的一件事是,32 位指令会自动将相应 64 位寄存器的前 32 位归零,而 16 位或 8 位指令则不会:

movabsq $0xffffffffffffffff, %rax
movb $0, %al # rax = 0xffffffffffffff00
movw $0, %ax # rax = 0xffffffffffff0000
movl $0, %eax # rax = 0x0000000000000000

使用 32 位指令的原因之一是它们是较短的机器代码。

关于汇编 64 位 - movl、movq。换车好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28558249/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com