1

我知道有人问过类似的问题,但还是听听吧。

这个学期我写了很多 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) 区域之前破坏代码。

我真的很好奇。

提前谢谢!

〜德米特里

4

1 回答 1

0

地址 0 到大约地址 $800 是为 68000 中的异常向量保留的。$1000 用作默认起始地址以避开保留区域。堆栈默认位于内存的顶部,并向地址 0 增长。

于 2016-07-07T11:54:47.560 回答