mips - 如果我尝试从 Mips 中不是 4 对齐的地址加载一个字,应该是什么行为?
问题描述
lw $s0, 3($sp)
我正在构建一个 Mips 汇编器,就其现在的状态而言,它可以容忍诸如来自一个单词,另外 3 个字节来自另一个单词。
换句话说,我应该处理数据,因为它是一个字数组(二维数组),所以我只能处理 4 对齐的字,或者一个一维数组,一个接一个地包含所有字节,我可以在其中访问任何 4 个连续字节并将它们塞进一个寄存器?
解决方案
MIPS 处理器应该在未对齐的地址上出错,但确定这一点不是汇编程序的工作。
警告可能是合理的,但从技术上讲,在构建时,您很少知道或预测寄存器中的内容。如果寄存器中的地址也是奇数,则偏移量 3 是合法的,并且可以与lw
or一起使用。sw
此外,程序员可能会试图导致错误——你永远不知道。
关键是该指令具有有效的编码,并且汇编程序应将文本翻译成该机器代码。
推荐阅读
- javascript - 受祝福的服务器(Node.js)通过 websocket 到浏览器中的 Xterm.js 客户端
- node.js - 使用 ng serve 找不到模块“@angular-devkit/build-angular”
- acumatica - 在用户更新并关闭智能面板后,如何在读取所有智能面板字段之前强制读取更新?
- sql-server - SQL Server:根据搜索另一个结果集从一个表中获取结果
- laravel - Vue.js 转换在 Laravel Blade + Sass 中不起作用
- core-ui - 添加具有默认布局的新组件
- python - 无法在 Gtk.TextView i Python 3 中对列进行排序
- javascript - 在数组中使用切片不会影响模板
- git - 如何恢复当前 git 提交的文件
- iphone - 如何使用蓝牙串行配置文件将串行数据发送到 Mac