У разных симуляторов 68k разные задачи TRAP?

В последнее время я возвращаюсь к программированию Motorola 68000. По общему признанию, когда я проходил курс, я просто делал то, что было необходимо для прохождения (и у меня был ужасный профессор)... но СЕЙЧАС я действительно заинтересован в этом. Во всяком случае, просматривая мой старый учебник Микропроцессор 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?


person Thomas    schedule 28.07.2010    source источник


Ответы (2)


Инструкция TRAP просто вызывает подпрограмму, на которую указывает длинное слово где-то в памяти. Эта часть поведения характерна для всех процессоров 68000. Куда указывает это длинное слово и что делает подпрограмма, на которую оно указывает (и, следовательно, как вы передаете ей необходимые данные и т. д.), зависит от конкретной системы.

(Например, Atari ST использовала TRAP для обращения к ОС, и вы, как правило, передавали всю необходимую информацию в стеке. Содержимое регистров игнорировалось. Я полагаю, что «Система» Mac OS использовала TRAP аналогичным образом, и Amiga вообще не пользовался)

person Community    schedule 01.08.2010
comment
+1 за упоминание разницы между схемами вызовов Atari и Amiga OS. :) - person Prof. Falken; 18.10.2010
comment
Кажется, я когда-либо помню только использование TRAP # 11 в конце всего моего кода, еще в тот день (flite ftl-68k представляет... извините). Я помню, как репетитор говорил мне, что он просто возвращает контроль над доской ОС. - person Jamie Taylor; 11.12.2012

68000 предоставляет 16 пользовательских ловушек (программные прерывания/исключения), но не указывает, что они делают. Это зависит от системного BIOS/ОС, будь то симулятор или Amiga, Atari ST и т. д. Вы можете найти список задач, выполняемых TRAP 15 в Easy68k внизу этого документа http://www.easy68k.com/files/EASy68KQuickRef.pdf.

person Caltor    schedule 17.01.2012