NKC Forum
Registrieren | FAQ | Suche | Wer ist online? | Mitgliederliste | Heutige Beiträge | Kalender | Einloggen



Autor Thema: Kein JMP 'absolute short' auf NKC ?
smed
Stammgast
**
ID # 114


  Erstellt am 21. Januar 2018 06:53 (#1)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo,
In meinem 68k Simulator wird ein JMP so assembliert:

0000A0000 org $a000
start:
0000A0000 4EF8 A000 jmp start

also mit Addressierungsart 'absolute short' (opcode: 4EF8)

Der NKC assembliert JMP mit Addressierungsart 'absolute long' (opcode: 4EF9)

00A000 org $a000
start:
00A000 4EF9 0000A000 jmp start

soweit so gut, beide Addressierungsarten sollten funktionieren. Der NKC (68008) verabeitet jedoch die kurze Addressierungsart anders als der Simulator:

Im Simulator ist nach

4EF8 A000 der PC auf $0000A000

Im NKC wird mit dem selben Opcode $FFFFA000 in den PC geladen und es crashed.

Warum?

Gruss
smed

-----------------------
NKC'ler seit 1984 (Pause zw. 1988-2017)
CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,UHR3,PROMER,CENT,SER,SOUND,CAS,6xBUS2,4xBUS3,3xPOW5V,2xTAST..und einen ArduinoMEGA mit auf dem BUS, und eine selbstgebastelte MEM960k.

NKC - OpenSource since 1983

Beiträge: 182 | Mitglied seit: Januar 2011 | IP-Adresse: gespeichert
DerInder
Fast schon Admin
Seitenadmins
***
ID # 2


  Erstellt am 21. Januar 2018 15:17 (#2)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin Moin,

es ist ganz einfach: Dein Simulator baut Mist ;)

Folgendes, der jmp Befehl braucht logischer Weise eine 32 Bit Adresse.
Bei deinem Simulator wird aus $A000 $0000A000, das entspricht aber nicht dem was der 68000er macht.
Der 68000er ergänzt die Adressen immer "sign extendet"!!! Daher wird aus $A000 $FFFFA000, denn $A000 ist ja ein negativer Wortwert.

Wenn du dein Programm beim NKC auf z.B. Adresse $2000 übersetzt, klappt dein obiges Vorgehen.

Ach ja, der Shortjump hat folgenden Syntax:
jmp start.w

-----------------------
Gruß
-=jens=-

Beiträge: 912 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert
smed
Stammgast
**
ID # 114


  Erstellt am 21. Januar 2018 16:11 (#3)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo
Super! Danke! :)

Gleich mal ausprobiert, und...stimmt!


org $2000
start1:

org $a000
start2:
jmp start1.w * PC = 0000A000

start3:
jmp start3.w * PC = FFFFA004



Mann-o-mann...

Gruss
smed

-----------------------
NKC'ler seit 1984 (Pause zw. 1988-2017)
CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,UHR3,PROMER,CENT,SER,SOUND,CAS,6xBUS2,4xBUS3,3xPOW5V,2xTAST..und einen ArduinoMEGA mit auf dem BUS, und eine selbstgebastelte MEM960k.

NKC - OpenSource since 1983

Beiträge: 182 | Mitglied seit: Januar 2011 | IP-Adresse: gespeichert
DerInder
Fast schon Admin
Seitenadmins
***
ID # 2


  Erstellt am 21. Januar 2018 16:22 (#4)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Immer gerne :)

Allerdings zeigt dein Beispiel, das 68k Programme (und mit Sicherheit auch andere) nicht unbedingt korrekt auf nem Simulator laufen :eek:

-----------------------
Gruß
-=jens=-

Beiträge: 912 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert
smed
Stammgast
**
ID # 114


  Erstellt am 23. Januar 2018 07:57 (#5)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo,
das stimmt, am Ende hat die Hardware immer recht.

Und hier der Link zum 68K Simulator: http://home.kpn.nl/pj.fondse/ide68k/

den gibts auch noch:http://www.easy68k.com/

Beide sind zum Lernen sehr gut geeignet. Und nachdem man damit ein bischen rumgespielt hat, kommt natürlich schnell der Wunsch auf die hex Files bequem zum NKC zu übertragen und dort laufen zu lassen, nachdem man im Simulator schon mal vorgetestet hat. Ich habe sowas halb am Laufen. Ich schreibe einen gesonderten Beitrag wenn es wirklich und ohne manuelle Schritte klappt. Für mich ist das eine kleine Revolution, bequem am PC für den NKC in Assembler zu programmieren, und das besondere Schmankerl: IDE68k (der erste Link) unterstützt auch C...

Gruss
smed

-----------------------
NKC'ler seit 1984 (Pause zw. 1988-2017)
CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,UHR3,PROMER,CENT,SER,SOUND,CAS,6xBUS2,4xBUS3,3xPOW5V,2xTAST..und einen ArduinoMEGA mit auf dem BUS, und eine selbstgebastelte MEM960k.

NKC - OpenSource since 1983

Beiträge: 182 | Mitglied seit: Januar 2011 | IP-Adresse: gespeichert



| https://hschuetz.selfhost.eu | Boardregeln | Datenschutzerklärung


Tritanium Bulletin Board 1.8
© 2010–2021 Tritanium Scripts


Seite in 0,015645 Sekunden erstellt
17 Dateien verarbeitet
gzip Komprimierung eingeschaltet
689,04 KiB Speichernutzung