%AX = (%AH + %AL)
那么为什么不%EAX = (%SOME_REGISTER + %AX)注册%SOME_REGISTER呢?
在Intel 64架构中,有rax..rdx寄存器,它们只是A..D通用寄存器.
但是也有一些名为rsi和rdi的寄存器,它们是"源索引"和"目标索引"寄存器.为什么这些寄存器有实际名称(与A等相比)?
"源索引"和"目标索引"实际上意味着什么?是否有一些惯例说这些寄存器应该在特定情况下使用?
谷歌没有显示结果,
有谁知道?
根据英特尔在x64中,以下寄存器称为通用寄存器(RAX,RBX,RCX,RDX,RBP,RSI,RDI,RSP和R8-R15)https://software.intel.com/en-us/articles/介绍到x64组装.
在下面的文章中,写了RBP和RSP是专用寄存器(RBP指向当前堆栈帧的基础,RSP指向当前堆栈帧的顶部). https://www.recurse.com/blog/7-understanding-c-by-learning-assembly
现在我有两个相互矛盾的陈述.英特尔声明应该是值得信赖的,但是什么是正确的,为什么RBP和RSP被称为通用目的?
谢谢你的帮助.
如果您正在编写程序集,那么将值分配给哪个寄存器重要吗?假设您将累积/中间值存储在 %ebx 而不是 %eax 中,后者传统上用于此目的。这是不好的做法吗?会影响性能吗?
换句话说,您是否可以将它们等同于存储空间,还是应该坚持将它们用于特定目的?
我正在研究 8086/8080 微处理器。其中使用的寄存器有名称,
当寄存器被命名为 R8、R9... 到 R15 时,继续直到 R8。我想知道
我们是否也将寄存器 RAX、RBX 等称为 R1、R2 等?
x64寄存器是否可以互换,因为任何与它们组合使用的指令都可以与其他指令一起使用?除了名称之外,是否有性能差异或任何其他因素使它们彼此不同?
哪里可以找到80x86注册的全名?我知道EAX意味着扩展AX.
那么,AX的含义是什么?即AX是首字母缩略词?
我正在学习汇编,我很好奇为什么寄存器的名称用这些字母指定,因为理解这一点可能有助于我在另一个层面上理解它。即AL是最低有效字节,但是“L”是什么意思呢?
图片来源:http ://www.cs.virginia.edu/~evans/cs216/guides/x86.html