Delphi-PRAXiS
Seite 2 von 5     12 34     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 19. Jan 2006 18:42

Re: Z80 Simulator
 
ich habs folgendermasen gelöst. jedes register seh ich als unsigned char 8 bit register.
egal wenns auf welchen rechnern 2 byte haben könnte ich mach immer mod 256. wenn ich doppelregister lesen will dann les ich das erste shifte um 8 bit und zähle das 2 hinzu. so müsste es gehen.

Robert Marquardt 19. Jan 2006 18:59

Re: Z80 Simulator
 
Ich wuerde so ein Projekt ja nicht anfangen ohne vorher gut C programmieren zu koennen und die Details des Z80 Befehlssatzes zu kennen.
Einen halbwegs effizienten Interpreter zu schreiben ist eine Kunst.

simonko 19. Jan 2006 20:04

Re: Z80 Simulator
 
stfu. die befehle hab ich alle hier vor mir liegen und c programmier ich schon seit 3 jahren. und es gibt schwereres als ein simulator zu schreiben.

turboPASCAL 19. Jan 2006 22:40

Re: Z80 Simulator
 
please see www.z1013.de (LINKS)

alcaeus 19. Jan 2006 22:51

Re: Z80 Simulator
 
@simonko: bitte halte dich evtl. bei der wortwahl etwas zurueck. Robert's Einwand ist durchaus gerechtfertigt, und wenn er auf dich nicht zutrifft; umso besser.

Greetz
alcaeus

Robert Marquardt 20. Jan 2006 04:43

Re: Z80 Simulator
 
Ach da muss er noch ganz andere Worte gebrauchen bevor er mich aufregt :-)
Wer sich nicht mit signed und unsigned auskennt, der duerfte doch Schwierigkeiten haben.
Gerade die Behandlung von Zahlen speziell in Hinsicht auf die Prozessorflags ist sonst nicht korrekt hinzukriegen.

Das "nicht" hat gefehlt.

Der Jan 20. Jan 2006 09:26

Re: Z80 Simulator
 
Kleiner Tip noch: Schau dir mal die Include-Dateien limit.h bzw. _lim.h an. Dort sind ne Menge nützliche Defines, z.B. CHAR_BITS, CHAR_MAX usw. Diese Includes gibt es auf so ziemlich jedem System. Da kannst du dir mir ein paar IFs, IFDEFs etc. deine Typen so zusammenbasteln, daß z.B. ein t_uchar immer 8bit ist usw.

Der_Unwissende 20. Jan 2006 10:12

Re: Z80 Simulator
 
Mal ganz kurz,
du möchtest entweder 4 * 1 Byte einzeln oder 2 * 2 Byte ansprechen und kannst C. Bin nicht so der C Crack, aber gibt es bei dir kein Union?

Gruß Der Unwissende

tommie-lie 20. Jan 2006 13:27

Re: Z80 Simulator
 
Zitat:

Zitat von Der_Unwissende
du möchtest entweder 4 * 1 Byte einzeln oder 2 * 2 Byte ansprechen und kannst C. Bin nicht so der C Crack, aber gibt es bei dir kein Union?

Unions helfen hier nur bedingt.
Code:
union myunion {
  int reg16;
  struct two_regs {
    char reg81;
    char reg82
  } reg8s
}
Wenn char hier 8 Bit groß ist und int 16, funktioniert das prima. Ist aber char 16 Bit groß und int 32, wird es Probleme geben, denn Wenn man 8bit-Werte in reg8s.reg82 schreibt, schreibt man diese nicht an das zweite Byte von reg16, sondern an das dritte. Eine derartige Implementierung macht daher nur Sinn, wenn die Zielplattform native Datentypen mit 8 und 16 Bit kennt. Kennt die Zielplattform diese nicht, muss man einen solchen nativen Datentyp simulieren, also mit Bit-Operationen aus zwei 16bit-Werten, bei denen jeweils nur 8 verwendet werden, einen 16bit-Wert zusammenbasteln.

Robert Marquardt 20. Jan 2006 14:09

Re: Z80 Simulator
 
Man benutzt einfach "short int". Natuerlich kann short int 8 Bit lang sein, aber das trifft hoechstens auf C Compiler fuer Mikrocontroller zu.
Wer es ganz genau machen will, der kann ja mit einem test auf "sizeof(short int) == 2" eine Sicherheitsabfrage einbauen.
Ein C Compiler mit sizeof(char) != 1 ist mir noch nie begegnet. Auch eine CPU mit einem Byte das nicht 8 Bit hat ist heutzutage komplett ungewoehnlich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:31 Uhr.
Seite 2 von 5     12 34     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