2013-03-17 36 views
1

我知道类似的问题已被询问,但无论如何听。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)区域之前破坏代码。

我真的很好奇。

提前致谢!

〜梅德

+0

它确实听起来像一个常规生长,其允许保留堆栈,命令行参数,在固定位置处的一些全局存储器等。我只写过几行68000汇编程序,所以我不记得有些放置常用变量等会使大多数操作码更短。但这是一种可能性(如6502中的零页)。 – 2013-03-17 08:49:12

+0

我不相信Easy68k有任何命令行参数,它是一个GUI模拟器。我在我的帖子中提到了全球内存和堆栈。另外,操作码的长度并不真正相关,但立即移动0x12345678仅为12个时钟,而从存储器移动它为20个时钟,并且操作码分别为立即数和内存的6个字节:203c 12345678,2039 0000001a,其中还显示全局数据存储在代码结尾,因为1a 0000001a内存紧跟着我的“移动#9,d0;陷阱#15”代码,指示“simhalt” – Dmitry 2013-03-17 09:03:54

回答

0

地址0到大约地址$ 800保留用于在68000 $ 1000异常向量被用作缺省起始地址留下清晰的保留区域。堆栈默认的存储器的顶部和朝向地址0

+0

没有公式表示向量在哪里。如果我记得他们不是0到800美元。让我检查一下。等等......你真的是“凯利教授”吗?对不起,我一直对中断向量感到困惑,所以我对与程序的创建者争论表示歉意,我爱你的程序,甚至试着看看它的代码,尽管上次为borland C编译它后有点困难我检查了。理解异常是Easy68k中最令人困惑的部分之一,这是我无法找到任何可以用我能理解的方式解释它的源的部分。 – Dmitry 2016-07-07 20:49:51