【发布时间】:2019-09-22 04:14:31
【问题描述】:
只是希望有人帮助我将一些值加载到某些寄存器中。
任务是“指示编译器将 0x2222333344445555 和 0x1111222233334444 的值分别存储在地址 0x1000100010001000 和 0x1000100010001100 中。在运行时将值加载到寄存器 x6 和 x7...”。
通过阅读 PDF 文件提供的信息以及问题,到目前为止,我的代码如下所示:
ORG 0x1000100010001000
a: DD 0x2222333344445555
ORG 0x1000100010001100
b: DD 0x1111222233334444
【问题讨论】:
-
RISC-V 汇编器是否有像
la x6, a这样的伪指令或将扩展为指令序列以在寄存器中生成静态地址的东西?如果是这样,请使用它,然后使用反汇编程序查看您得到了什么。甚至ld x6, a构造一个静态地址。 (例如,使用地址的低几位作为寻址模式的一部分,而不是首先在寄存器中构造完整地址)。我忘记了 8 字节加载指令的 RISC-V 助记符;ld是 MIPS64 助记符。 -
哪个指令集 rv64i?
-
是的,应该是 rv64i。好吧,我们使用的是双字,而不是单词 sold、sd 而不是 lw、sw 等。我也在使用 RISC-V 视觉模拟器 (RVS),因为这是我的教授告诉我们在课程中使用的。我确信有一种比我最初提供的更合适的方式来启动代码。对于这些问题,我们介绍了 DD、DM、ld、sd、ORG 等内容,如果有帮助的话。真的很想学习这一点,并试图找到好的资源来帮助我为这门课程打下基础。