汇编语言:64位寄存器的8位版本?

问题描述 投票:0回答:1

所以,假设我正在使用寄存器%rax%rdi

作为一个基本示例,假设%rax等效于0xaaaaaaaaaaaaaaaa%rdi等效于0xbbbbccccddddeeff

movq %rdi, %rax这样简单的东西对我来说足够简单。我们只需将%rdi中的值移动到%rax中即可。

所以,说我们有以下内容:

movq %rdi, %rax
movb %dil, %al

第一条指令的%rax等于0xbbbbccccddddeeff

但是由于我们使用的是%rax%rdi的8位版本,因此我不确定在执行第二条指令后如何确定%rax的值。

我对汇编语言非常陌生,我对很多事情感到困惑。我一直在做很多研究和研究,但是我仍然很迷茫,所以我认为在这里提出一个明确的问题将对我有所帮助。任何有关如何解决此问题的解释将不胜感激!

assembly x86-64 cpu-registers
1个回答
0
投票

第二条指令movb %dil, %al仅替换%rax的最低8位。其余的保持原样。

所以%rax将是0xbbbbccccddddeeff

© www.soinside.com 2019 - 2024. All rights reserved.