riscv - RISC-V:12 位立即数逻辑运算是否对整个寄存器进行操作?
问题描述
我正在尝试为 RISC-V CPU 编写一个模拟器,但找不到我的问题的明确答案。
假设我想使用
ANDI rs1, rd, 0xFFF
rs1 包含 0xFFFFFFFF,立即值为 0xFFF。
ANDI 是否对完整寄存器进行操作,并仅用零填充立即数的剩余 20 位,因此 rd 中的结果将为 0x000000FFF?
还是忽略高 20 位,rd 中的结果仍然是 0xFFFFFFFF?
XORI 和 ORI 命令的问题相同。
解决方案
立即值是符号扩展的,12 位 FFF 将转换为 RV32 的 32'hFFFFF_FFF
所以被AND-ed的值将是
rs1_data & 0xFFFFF_FFF
推荐阅读
- python - 在 kivy 中显示列表
- r - 如何对一个数据框中的列值求和并将结果添加为另一个数据框中的列?
- java - 如何使用 SQS 事件对 aws lambda 进行单元测试
- docker - 拥有非 root 用户时的文件所有者
- c# - VSCode 未显示 MonoDevelop/Unity/C# 的建议代码
- c# - 无法访问已处置的对象。对象名称:AspNet Core/EF Core 项目中的“IServiceProvider”错误
- python - 无法按分位数选择 Pandas DataFrame
- discord.py - 我怎样才能制作一个禁止 dm 用户的机器人?
- python - Python For 循环遍历范围
- groovy - 来自 http-builder 的二进制内容的 NoSuchMethodError