我知道有人问过类似的问题,但还是听听吧。
这个学期我写了很多 Easy68k 程序,我很好奇为什么 org 指令总是设置为 1000 美元、2000 美元或 2500 美元。
虽然答案是“按照个人惯例”,但我对理解以下内容更感兴趣:
- 设置 org 指令有什么好处,CPU 可以执行从 0x0 到 0xffffffff 的任何内容,那么需要将程序开始一直偏移到 0x1000 吗?
例如:
org $1000
start:
moveq #9, d0
trap #15
end start
有效,但偏移了 4096 字节
start:
moveq #9, d0
trap #15
end start
也有效,但根本没有抵消
那么为什么需要这个指令呢?我没有为任何特定目的保留 [0x0, 0x1000),那么保持这个偏移量有什么意义呢?
到目前为止的结论
- Easy68k 没有全局变量的默认位置,它们被放置在 pc 中(通常按照惯例放在程序的末尾)。
- Easy68k 的默认堆栈指针在 0,向下增长到 0xffffffe,向下(它是字对齐的):这意味着与 [0, 0x1000) 区域没有冲突。事实上,它会在破坏 [0, 0x1000) 区域之前破坏代码。
我真的很好奇。
提前谢谢!
〜德米特里