我知道类似的问题已被询问,但无论如何听。Easy68k大会ORG指令
我已经写了不少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不具有全局变量的缺省位置,它们被放置在个人电脑(通常在程序按照惯例年底)。
- Easy68k的默认堆栈指针为0,成长downwords到0xffffffe,并向下(这是字对齐):这意味着有是[0,0x1000)区域没有冲突。事实上,它会在破坏[0,0x1000)区域之前破坏代码。
我真的很好奇。
提前致谢!
〜梅德
它确实听起来像一个常规生长,其允许保留堆栈,命令行参数,在固定位置处的一些全局存储器等。我只写过几行68000汇编程序,所以我不记得有些放置常用变量等会使大多数操作码更短。但这是一种可能性(如6502中的零页)。 – 2013-03-17 08:49:12
我不相信Easy68k有任何命令行参数,它是一个GUI模拟器。我在我的帖子中提到了全球内存和堆栈。另外,操作码的长度并不真正相关,但立即移动0x12345678仅为12个时钟,而从存储器移动它为20个时钟,并且操作码分别为立即数和内存的6个字节:203c 12345678,2039 0000001a,其中还显示全局数据存储在代码结尾,因为1a 0000001a内存紧跟着我的“移动#9,d0;陷阱#15”代码,指示“simhalt” – Dmitry 2013-03-17 09:03:54