PDP-8 Assembler

Sursă Originală: http://people.csail.mit.edu/ebakke/pdp8/

Reveniți la site-ul lui Eirik
Contactați-mă la ebakke@alum.mit.edu

pdpnasmeste un asamblor pentru calculatorul PDP-8 , scris în C. Urmează sintaxa standard PAL-III, cu câteva excepții, și era destinată să fie compatibilă înapoi cu asamblorul Prof. Wolf așa cum este folosit în ELE 375 (toamna 06). Avantajele față de asamblatorul anterior includ:

  • Mai robust; captează mai multe erori și oferă mesaje de eroare sensibile.
  • Mai aproape de specificația originală PAL-III.
  • Mult mai flexibil cu spațiul alb.
  • Același cod se ocupă de ambele treceri.
  • Simplificarea codificării instrucțiunilor utilizând “tabelul cu simboluri fixe”.

A folosi:

  1. Rulați makepentru a construi pdpnasm(funcționează în UNIX sau Cygwin).
  2. Rulați (aceeași utilizare ca și originalul ELE 375). pdpnasm asm-file.p8 obj-file.popdp8asm

fixtab.p8conține tabelul cu simboluri fixe, adică definiția mnemonicii cum ar fi TADși CLA, și trebuie să fie prezent în directorul curent când se asamblează. Această metodologie este analogă cu modul în care a funcționat ansamblul original PAL-III, având instrucțiuni mnemonice ca un caz special de simboluri definite de utilizator.

Arhiva ZIP

Descărcați pdpnasm.zip (cod sursă UNIX și Makefile).

Lipsește caracteristici

General

  • Mesajele de eroare indică începutul defecțiunii în loc de poziția de intrare curentă.
  • Testarea automată.

Devieri deliberate față de specificație

  • Junk (caracterele cu excepția spațiilor albe) nu sunt acceptate după $.
  • “Caracterele ignorate” nu sunt ignorate; pot declanșa erori în schimb.
  • “Caracterele ilegale” nu sunt ignorate; va declanșa erorile în schimb.
  • Literele integer nu trebuie să se potrivească într-un singur cuvânt atâta timp cât expresia generală o face.
  • Toate caracterele unui nume de simbol sunt utilizate pentru identificare; nu doar primele șase.
  • Angajamentele recursive nu sunt acceptate (de ex. ” EXIT=RETURN=JMP I 0“)
  • Redefinirea sau atribuirea simbolurilor sunt tratate ca erori.
  • Tabelul cu simboluri nu este tipărit la sfârșitul Pass 1.
  • FIXMRIpoate fi folosit oriunde în cod (nu doar imediat după EXPUNGE).
  • Mesajele de eroare nu pot fi formulate exact ca în specificație.

În prezent, caracteristicile neimplementate din specificație

  • OCTALDECIMAL.
  • PAUSEFIELD.
  • EXPUNGEFIXTAB.
  • Tabela simbolurilor fixe nu conține încă toate simbolurile specificate.
  • ZTokenul opțional nu este acceptat (efectuați și o eroare de verificare aici).

Specificația PAL-III poate fi găsită aici .