32位IR如何保持加载指令?(RISC风格32位体系结构) [英] How 32 bit IR hold load instruction?(RISC style 32bit architechture)
本文介绍了32位IR如何保持加载指令?(RISC风格32位体系结构)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
推荐答案
您假设一条指令可以对来自任意绝对地址的加载进行编码。在x86上也是如此,即使在64位模式下也是如此(但有一个特殊的操作码,用于从没有位移或索引寄存器的64位绝对地址加载,且DEST必须是RAX)。
在大多数RISC体系结构上,从绝对地址加载通常使用两条立即移位指令来设置寄存器的上半部分和下半部分,然后将该寄存器用作加载地址。
例如
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
这篇关于32位IR如何保持加载指令?(RISC风格32位体系结构)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文