encoding - 为什么 mips 中的 sw 指令使用字节作为偏移单位?
问题描述
我对 MIPS32 指令中使用的偏移单位有疑问。lw $t0, offset($s1)
我刚刚注意到内存访问指令像offset
单位字节一样,而分支指令beq $r1, $r2, L1
和跳转j SOMEWHERE
都具有单位字。
IIRC,MIPS 要求每个数据/指令都应该以4 的倍数的地址对齐0x0, 0x4, 0x8, ... etc
存储在内存中,即. 如果这是真的,那为什么不让单元词offset
进来,所以范围更大呢?这是因为它使用了字节单位吗?所以lw/sw
lb/sb
特殊情况不足以打破规则 ["] 好的设计需要良好的妥协。[."]在这里适用吗?
我还想知道如果我lw
用来加载地址不是 4 的倍数的数据会发生什么?
解决方案
推荐阅读
- php - PHP unlink() 内容仍然出现
- r - BlueSky Statistics - 更改数值统计分析语法以删除 n 和 NA
- c# - 为什么我不能在 FormsAuthentication.SetAuthCookie 的方法中使用 login.RememberMe = false 在 asp.net mvc 中禁用 Cookie
- c# - 如何在不使用 xaml 的情况下自动在 wpf 中创建堆栈面板
- c# - Moq - 模拟实体框架集一般
- sql - 使用滞后计算 SQL 中行之间的平均值并忽略第一行
- firebase - 如何将列表作为参数发送到 Flutter 中的 Firebase 函数?
- node.js - 为什么不在 REST API 版本控制中考虑模型?
- javascript - amCharts 4 - 第二个 Y 轴不显示值
- c# - 如何上传具有确切文件夹结构的整个文件夹?