gpt4 book ai didi

assembly - 32 位 OR 如何保持加载指令?(RISC 风格的 32 位架构)

转载 作者:行者123 更新时间:2023-12-04 18:04:21 26 4
gpt4 key购买 nike

我对指令大小和可寻址空间有点困惑(我假设指令大小应该与地址位的大小相同。我在我的书中没有找到足够的解释)如果我是正确的,那么理论上如果我们有一个 2^32 32 位架构(RISC 风格)中的可寻址内存单元(字节) 4 字节大小的加载指令如何保存操作码和地址?

最佳答案

您假设单个指令可以对来自任意绝对地址的加载进行编码。在 x86 上也是如此,即使在 64 位模式下也是如此(但有一个特殊的操作码用于从 64 位绝对地址加载,没有位移或索引寄存器,并且 dest 必须是 rax)。

在大多数 RISC 体系结构中,从绝对地址加载通常使用两条 mov 立即指令来设置寄存器的上半部分和下半部分,然后使用该寄存器作为加载地址。

例如,

int a;
int foo(void) { return a; }

compiles to (ARM gcc 4.8.2 on godbolt) :
foo():
movw r3, #:lower16:.LANCHOR0 @ tmp113,
movt r3, #:upper16:.LANCHOR0 @ tmp113,
ldr r0, [r3] @, a
bx lr @
a:
.space 4

关于assembly - 32 位 OR 如何保持加载指令?(RISC 风格的 32 位架构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33830520/

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