7

最近、Motorola 68000 のプログラミングを見直しています。確かに、私がコースを受講したとき、私は合格するために必要なことをしただけです(そしてひどい教授がいました)...しかし今、私は実際にそのようなものに興味があります. とにかく、私の古い教科書The 68000 Microprocessor by James L. Antonakosに目を通してみると、彼は次のコードを使用しています。

      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

これは単にコンパイラ間の違いによるものですか? それとも、ここでもっと大きなものを見逃していますか? シミュレーターでは、その時点でレジスター D0 にあるすべてのタスクが実行されることを理解していますが、TRAP #15シミュレーターごとに異なるトラップ タスクがありますか、それとも 68000 プロセッサすべてで標準ですか?

4

2 に答える 2

9

このTRAP命令は、メモリ内のどこかにあるロングワードが指すルーチンを呼び出すだけです。動作のその部分は、すべての 68000 CPU に共通です。そのロングワードがどこを指すか、それが指すルーチンが何をするか (したがって、必要なデータをどのように渡すかなど) は、特定のシステムによって異なります。

(たとえば、Atari STTRAPは OS を呼び出すために使用され、通常、関連するすべての情報をスタックに渡しました。レジスタの内容は無視されました。Mac OS の「システム」TRAPも同様の方法で使用されたと思いますが、Amiga はそうではありませんでした。絶対に使わない。)

于 2010-08-01T17:17:45.287 に答える
4

68000 は 16 のユーザー トラップ (ソフトウェア割り込み/例外) を提供しますが、それらが何をするかを指定していません。これは、システムの BIOS/OS に依存します。それがシミュレータであれ、Amiga であれ、Atari ST であれ、このドキュメントの最後に、Easy68k で TRAP 15 によって実行されるタスクのリストがありますhttp://www.easy68k.com /files/EASy68KQuickRef.pdf .

于 2012-01-17T16:04:11.327 に答える