Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Z80 Simulator (https://www.delphipraxis.net/61246-z80-simulator.html)

simonko 18. Jan 2006 19:34


Z80 Simulator
 
Hi fellas,
ich muss ein z80 simulator schreiben. ich weiss aber nicht welche datenstruktur für die register nehmen soll. In z80 gibt es das B,C,D,E Register. (und noch andere das ist jetzt aber irrilevant)
Alle zu 8 bit. BC und DE können als 16 bit register gelesen werden. Nun wollte ich folgendes machen.


char reg8[4] // B,C,D,E register
short int *reg16[2] //BC DE

wenn nun reg16[0] auf reg8[0] zeigt dann liest er automatisch BC.
Nun hab ich aber ein PROBLEM da das ganze auch auf linux laufen soll. Und da ist char manchmal als 2 byte? short ist auch nicht immer 2 byte lang. Hab schon lange daran herumgeräzelt.
Ich wäre sehr dankbar wenn jemand einen Lösungsvorschlag hat.

MFG

Flocke 18. Jan 2006 21:03

Re: Z80 Simulator
 
Mach's so, dann kannst du dir die Pointer sparen:
Delphi-Quellcode:
type
  TZ80Regs = record
    case integer of
    0: ( reg8: array [0 .. 3] of byte; );
    1: ( reg16: array [0 .. 1] of word; );
  end;
Die Typen BYTE und WORD sind übrigens immer 8 bzw. 16 Bits lang.

simonko 18. Jan 2006 21:31

Re: Z80 Simulator
 
ja ich muss das in C machen da gibts irgendwie kein byte und kein word :-/

tommie-lie 18. Jan 2006 21:44

Re: Z80 Simulator
 
Zitat:

Zitat von simonko
ja ich muss das in C machen da gibts irgendwie kein byte und kein word :-/

Richtig, weil es eine Architektur geben könnte, die gar keine Möglichkeit hat, 8bit nativ anzusprechen. Warum bleibst du nicht beim Char und ORst bei Gelegenheit mit 0xFF? Dann sind halt nur die 8 niederwertigsten Bits signifikant, der Rest ist Null.
Das verschließt einem zwar ziemlich viele Optimierungsmöglichkeiten, aber das ist der Preis für eine Komplette Prozessoremulation in einem *komplett* unterschiedlichem Prozessor. Was nicht da ist, muss eben emuliert werden. Du könntest ja mit IFDEFs arbeiten, wenn du die passenden Architekturen rausgefunden hast. Per makefile übergibst du je nach Zielplattform ein Preprocessor-Symbol und wenn es eine von dir als "tauglich" eingeschätzte Plattform ist, nimmst du optimierte Funktionen, die allerdings 8bit große chars benötigen, und in allen anderen Fällen nimmst du eine generische Implementierung, die dafür langsamer läuft.

simonko 18. Jan 2006 22:26

Re: Z80 Simulator
 
ich muss nur schauen dass es nicht über den bereich hinausgeht. also 255 ist das maximum dann soll es wieder von unten hochzählen..

Robert Marquardt 19. Jan 2006 07:33

Re: Z80 Simulator
 
Zitat:

Zitat von simonko
ja ich muss das in C machen da gibts irgendwie kein byte und kein word :-/

...und was ist dann "unsigned char" bzw. "unsigned short int"?

NicoDE 19. Jan 2006 08:15

Re: Z80 Simulator
 
Zitat:

Zitat von simonko
Nun hab ich aber ein PROBLEM da das ganze auch auf linux laufen soll. Und da ist char manchmal als 2 byte?

Oder 4 (sehr selten). Wie auch immer, du wirst wahrscheinlich nicht umhin kommen, dir eigene Typen je nach Plattform zu definieren. Für die meisten würde es dann zum Beispiel so aussehen: typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned long uint32_t ... ( _t ist nur uralter C-Stil, kann man auch weglassen). Für die anderen Plattformen musste du dir dann die entsprechenden Deklarationen zusammensuchen - oder einen Header finden, in dem dies schon erledigt wird (die Header heißen oft typedef.h, inttypes.h, ...).

Der Jan 19. Jan 2006 08:17

Re: Z80 Simulator
 
Schau mal bei Sourceforge. Da gibts eine LibSidPlay, bei der ist eine 6502/6510-Emulation dabei (8-bit Proz, der z.B. im C64 zum Einsatz kam). Ist zwar nicht der Z80, kann man aber viel draus lernen. Bin mir nicht sicher, aber hab derletzt auch irgendwo eine OpenSource-KC85-Emulator gesehen (der ja den Z80 hatte), weiß aber nicht ob das bei SF war. Muscht mal googlen.

NicoDE 19. Jan 2006 08:38

Re: Z80 Simulator
 
Zitat:

Zitat von Der Jan
hab derletzt auch irgendwo eine OpenSource-KC85-Emulator gesehen (der ja den Z80 hatte), weiß aber nicht ob das bei SF war.

Meinste diesen: http://kcemu.sourceforge.net/ ?
(*seufz* da kommen alte Erinnerungen auf... )

Der Jan 19. Jan 2006 09:05

Re: Z80 Simulator
 
Zitat:

Zitat von NicoDE
Meinste diesen: http://kcemu.sourceforge.net/ ?
(*seufz* da kommen alte Erinnerungen auf... )

Jaaa, das waren noch Zeiten :) :corky:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 Uhr.
Seite 1 von 5  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz