不同的68k模拟器有不同的TRAP任务吗?

7

最近我一直在重新学习Motorola 68000编程。坦白地说,在上课时,我只是为了及格而做(而且还有一个糟糕的教授)......但现在我对这个东西真正感兴趣了。无论如何,翻阅我的旧教材《James L. Antonakos的68000微处理器》,他使用以下代码:

      ORG     $8000
HMSG  DC.B    'Hello!'
      DC.B    0  
      ORG     #8100  
START MOVEA.L #HMSG,A3  
      TRAP    #3  
      TRAP    #9  
      END     START  

这段内容的翻译如下:

Easy68k中,这个代码无法编译,但是书中引用了ASM68K。当我把代码改成这样后,它就可以工作了。

      ORG   $1000
HSMG  DC.B  'Hello!',0

START LEA   HSMG,A1
      MOVE  #14,D0  
      TRAP  #15

END START

这只是编译器之间的差异吗?还是我忽略了更重要的东西?我知道在模拟器中,TRAP #15会执行寄存器D0中的任务,但不同的模拟器是否有不同的陷阱任务,还是在所有68000处理器中都是标准的?

2个回答

9
TRAP指令只是调用存储在内存某个长字中指向例程的常见行为。这部分行为适用于所有68000 CPU。该长字指向何处以及其所指向的例程的作用(因此如何传递所需数据等)取决于特定系统。
例如,Atari ST使用TRAP调用操作系统,并且通常将所有相关信息通过堆栈传递。寄存器内容被忽略。我相信Mac OS“System”也以类似的方式使用TRAP,而Amiga根本不使用它。

如果提到了Atari和Amiga操作系统调用方案的区别,加1分。 :) - Prof. Falken
我似乎只记得在我的所有代码末尾使用 TRAP #11,回到过去的日子(flite ftl-68k represent...抱歉)。我记得我的导师告诉我,“它只是将控制权返回给操作系统”。 - Jamie Taylor
一个 TRAP 比一个 JSR 更快还是更慢?我想更慢,因为它需要进入特权模式。 - puppydrum64

4
68000提供了16个用户陷阱(软件中断/异常),但并没有指定它们的功能。这取决于系统BIOS/操作系统,无论是模拟器还是Amiga、Atari ST等。您可以在本文档底部的Easy68k中找到TRAP 15执行的任务列表。 http://www.easy68k.com/files/EASy68KQuickRef.pdf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接