mips - 对 mips I-Type 指令语法感到困惑
问题描述
对不起这个非常愚蠢的问题。但是我一整天都在阅读我的教科书,它变得非常混乱。
我想用 MIPS I-type 指令澄清一些与语法相关的问题。
我明白这样的说明
addi $21, $22, -50
是可能的,并且立即值被解释为十进制(2s 补码)。
但是我可以写成addi $21, $22, 0xF1DF?
立即值是十六进制的吗?
这让我想到了我的下一个问题andi $10, $11, 0xFFFF
and ori $8, $0, 0x0FA5
。我知道这两个代码是正确的。
但是我可以写成andi $10, $11, 120
这样ori $8, $0, -16
立即值是十进制的吗?如果可能,它是解释120
为十六进制还是将十进制转换120
为十六进制,相当于78
十六进制。
我很困扰。
解决方案
您可以用 10 进制或十六进制表示立即数。要表示一个 hedacimal 值,您需要0x
在数字前使用前缀(例如0x10
,16
以 10 为基数)。如果你不在0x
数字前使用前缀,汇编器将假定数字是十进制表示法。
使用您的示例,如果您想添加120
(以 10 为底),您应该像 soaddi $10, $11, 120
或 like so对指令进行编码addi $10, $11, 0x78
。汇编器将产生相同的二进制指令0x20000000
。您可以使用此在线汇编器在此处亲自尝试。
推荐阅读
- javascript - 反应在两个视图中呈现不同的对象
- nginx - nginx url重写而不重定向
- orange - python脚本中的橙色过滤器
- python - pandas(python)中的文本分类
- javascript - 如何通过 JavaScript 删除表中的数据
- javascript - 移动到 div 时可以显示隐藏的内容吗?
- database - 挖掘社交媒体数据并将其保存以供分析的推荐方法
- linux - 为什么在 RFECV/LogisticRegression 之后 sklearn 中的核心活动减少
- ios - 在原生反应原生模块中向 iOS 添加资源文件
- perl - 使用 XML::LibXML 编辑具有多个属性的 XML 文件