首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将64位地址加载到寄存器中

将64位地址加载到寄存器中
EN

Stack Overflow用户
提问于 2021-06-26 23:18:49
回答 1查看 142关注 0票数 2

我需要让我的RISC-V汇编在运行时编写指令-(这是Forth,这样用户就可以扩展该语言)。当我使用32位ISA时,这是相对简单的,比如说我想从我当前正在写入的地址获得一个偏移量,我会做一些事情,比如写出操作码:

代码语言:javascript
复制
 lui s8, [upper 20 bits of address]
 addi s8, s8, [offset]

当我有64位地址时,这不再起作用,因为我必须写出实际的操作码,而不仅仅是使用汇编技巧,如

代码语言:javascript
复制
li s8, address

我对如何做这件事感到困惑。正确的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-09 06:44:35

基本上,我通过将数字的高32位加载到底部32位,然后左移32位并加载底部32位来解决这个问题。

这是一个典型的输出程序集:

代码语言:javascript
复制
  0x0000003ff7dbd040:  li  s8,63                     #0x3f
  0x0000003ff7dbd044:  slli    s8,s8,0x20            #shift left 32 bits
  0x0000003ff7dbd048:  lui t0,0xf7dbd                #upper half load
  0x0000003ff7dbd04c:  ori t0,t0,0                   
  0x0000003ff7dbd050:  slli    t0,t0,0x20
  0x0000003ff7dbd054:  srli    t0,t0,0x20
  0x0000003ff7dbd058:  or  s8,s8,t0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68143739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档