pointers - 如何访问 SUBLEQ 中的指针
问题描述
我最近开始学习 SUBLEQ 单指令集计算机,目前正在尝试为我编写的 SUBLEQ 仿真器编写一个简单的汇编程序。到目前为止,我已经实现了 DB、MOV、INC 和 DEC,但是当 MOV 指令有指针作为参数时,我有点挣扎。
例如:MOV 20, 21
在 SUBLEQ 中将数据从地址 21 移动到地址 20 如下所示(假设地址 100 为零并且程序从地址零开始):
sble 20 20 3
sble 21 100 6
sble 100 20 9
目标地址处的内容清零,源地址处的内容减去两次后加到目标地址。
现在我的问题是:如果一个参数是一个指针,例如MOV 20, [21]
,地址 21 的内容指向我想要复制到地址 20 的真实数据,那么如何使用 SUBLEQ 来表示?
解决方案
我首先要说我对 subleq 在实践中的使用方式知之甚少,所以对这个答案持保留态度:
subleq 的一个缺点是使用指针非常困难,但它可以编辑自己的代码。这意味着您将不得不使用代码将正在查看的地址改写为 21。
例如,如果您以某种方式将代码转到附加在当前代码之后的行中,则可以使用以下命令:
# (I used the quotes to mean next line)
sble 3 3 " # set the first value of the second instruction to 0
sble 21 101 " # put the value of 21 into an unused address
sble 101 3 " # subtract the value of 101 and put it back into the code
sble 3 3 " # reset the value at 3 to 0
必须拥有一个 movp(移动指针)命令可能是一个不错的决定,这样您就不会在运行时意外弄乱您的 mov 命令代码
这意味着对于人们遇到的每个问题,必须以不同的方式考虑使用指针的新方法,但通常通过使用代码编辑代码来完成
推荐阅读
- node.js - 如何从打包的 Electron 应用程序运行可执行文件
- laravel - “laravel homestead vagrant up 错误”
- selenium - 无法将对象实例从 conftest.py 传递给测试类
- cesium - 在 CesiumJS 中切换 mixin
- python-3.x - 在纽约市地图上绘制计数数字+按社区组的颜色代码
- highcharts - 在图表区域内渲染 html 滑块
- c++ - 为什么我会在屏幕上显示一半的三角形?
- neo4j - 返回与具有特定属性的其他节点的连接最多的节点
- c# - C#:如何序列化/反序列化 EventBookmark 类的对象
- java - Java中的Selenium Grid:org.openqa.selenium.SessionNotCreatedException:无效参数:无法终止退出的进程