【发布时间】:2017-01-01 20:00:55
【问题描述】:
我正在编写的 8086 汇编器有问题。 问题出在汇编程序通行证上。
在第 1 阶段,您计算每个标签相对于段的位置。
现在要做到这一点,必须计算每条指令的大小并将其添加到偏移量中。
如果标签的位置在一个范围内,8086 中的某些指令应该更小。例如,“jmp _label”会选择短跳转,如果可以,会选择近跳转。
现在问题是在第 1 步中,标签尚未到达,因此它无法确定指令的大小,因为“jmp short _label”小于“jmp near _label”指令。
那么我如何确定天气“jmp _label”是否成为“jmp short _label”?
三遍也可能是个问题,因为我们需要知道当前指令之前每条指令的大小才能给出偏移量。
谢谢
【问题讨论】:
-
我想到了一个可能的解决方案,如果您同意,请告诉我?
-
我想到了一个可能的解决方案,如果您同意,请告诉我?我能做的是让它猜测并选择一个短跳。在计算完段的大小后,它将回溯并查看它们是否是错误的,如果它们会纠正每个指令偏移量吗?这会很慢,但会起作用,如果有人有更好的方法,请告诉我
-
我正在为 8086 编写一个汇编器。因为我已经编写了一个编译器,它从那里生成汇编,汇编器将创建机器代码。
-
这里的人可以帮助你。 board.flatassembler.net 如果有机会,请与 Tomasz 交谈并询问他。
-
谢谢你的链接。