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 |
Re: Z80 Simulator
Mach's so, dann kannst du dir die Pointer sparen:
Delphi-Quellcode:
Die Typen BYTE und WORD sind übrigens immer 8 bzw. 16 Bits lang.
type
TZ80Regs = record case integer of 0: ( reg8: array [0 .. 3] of byte; ); 1: ( reg16: array [0 .. 1] of word; ); end; |
Re: Z80 Simulator
ja ich muss das in C machen da gibts irgendwie kein byte und kein word :-/
|
Re: Z80 Simulator
Zitat:
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. |
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..
|
Re: Z80 Simulator
Zitat:
|
Re: Z80 Simulator
Zitat:
|
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.
|
Re: Z80 Simulator
Zitat:
(*seufz* da kommen alte Erinnerungen auf... ) |
Re: Z80 Simulator
Zitat:
|
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. |
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. |
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.
|
Re: Z80 Simulator
please see www.z1013.de (LINKS)
|
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 |
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. |
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.
|
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 |
Re: Z80 Simulator
Zitat:
Code:
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.
union myunion {
int reg16; struct two_regs { char reg81; char reg82 } reg8s } |
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. |
Re: Z80 Simulator
gerechtfertigt? das sinnlose kritisieren ohne argumente bringt hier niemanden weiter. man was haben denn einige für ein problem. kommt mit eurem leben klar
|
Re: Z80 Simulator
Zitat:
|
Re: Z80 Simulator
Auch bei Linux ist der char 1 Byte gross. Ein Unicode char hat schon seit vielen Jahren den Typ wchar_t.
Ueblicherweise ist er als "typedef short int wchar_t;" deklariert. Moderne Compiler gehen dazu ueber wchar_t als Sprachbestandteil zu behandeln. Du solltest vielleicht mal den Rahmen deiner Frage setzen, statt dich zu beklagen das unsere Vorschlaege nicht zu deiner Zufriedenheit sind. Wenn du wirklich auf der Abstraktionsebene des ANSI-C-Sprachstandards implementieren willst, dann sage das doch bitte. Compiler mit short int = 1 Byte und int = 2 Byte sind heutzutage nur noch im Mikrocontrollerumfeld anzutreffen. Du willst doch nicht ernsthaft darauf dann einen Z80-Emulator laufen lassen? Du impliziert uebrigens in deinen Antworten das du firmer in C bist als ich. Beantworte daher bitte die Frage was Trigraphen sind. Edit: ein paar Schreibfehler |
Re: Z80 Simulator
blablabla... :thumb:
|
Re: Z80 Simulator
Zitat:
|
Re: Z80 Simulator
das wurde mir gelöscht. ich stehe zu meinen aussagen.
ich hab keine lust mehr mit solchen komischen leuten hier zu schreiben. ich bin hier hergekommen weil ich hilfe brauche und nicht um von solchen leuten mit komplexen die zeigen wollen dass sie was drauf haben beschimpft zu werden. die meisten hier sind einfach solche wannabes. MFG Darkstar |
Re: Z80 Simulator
Versteh ich das gerade richtig, dass du kostenlose Hilfe haben möchtest, die 100% richtig und kompetent ist. Du bewertest Ungereimtheiten oder Kommentare und Hilfestellungen, die über das Gefragte hinausgehen als Angriff auf deine Person und zudem bist du auch nicht bereit dich in irgendeinerweise dankbar zu zeigen?
|
Re: Z80 Simulator
Zitat:
Daß man es für gänige Compiler auf gängigen Architekturen wunderbar mit den nativen Typen optimieren kann, weil man den ganzen Maskierungskrempel spart, habe ich oben schon geschrieben. IFDEFs wären hier eine Möglichkeit, das Binary klein zu halten, deine Abfrage über sizeof eine Möglichkeit, ein Fat Binary zu erhalten (ob das Sinn macht, bei Architekturen, die derartig inkompatibel sind, sei mal eine andere Frage). Zitat:
Und das ganz unabhängig von deinem vorhandenen oder nicht vorhandenen Wissen über C oder Linux oder sonstewas. |
Re: Z80 Simulator
иди на хуй
пока |
Re: Z80 Simulator
Zitat:
|
Re: Z80 Simulator
Langweilig, hatten wir doch schon zweimal :mrgreen: .
Aber ich glaube nicht, dass aus diesem Thread noch etwas Produktives herauskommt :gruebel: . |
Re: Z80 Simulator
Zitat:
|
Re: Z80 Simulator
Zitat:
Code:
-------------------------------------------------------------
MERKBEFREIUNG - MERKBEFREIUNG - MERKBEFREIUNG - MERKBEFREIUNG Die nachstehend eindeutig identifizierte Lebensform Name : Simon________________________________ [_] egal Vorname : Sowieso______________________________ [_] egal Geburtsdatum : leider_______________________________ Geburtsort : leider auch__________________________ Usenet-Kennzeichen : simonko______________________________ ist hiermit (_) für den Zeitraum von (_) 2 Sekunden (_) ___ Tagen (_) ___ Wochen (_) ___ Monaten (_) ___ Jahren (X) unbefristet davon befreit, etwas zu merken, d.h. wesentliche Verhaltensänderungen bei der Interaktion mit denkenden Wesen zu zeigen. Die Einstufung der o.a. Person nach dem amtlichen Index für Merkbefreiungen liegt bei dem Äquivalent von (_) einem Mensaessen vom Vortag (_) drei Hartkeksen (Werksverkauf Bahlsen) in löslichem Kaffee Hag (_) einem Quadratmeterstück Torfmoos während einer sechswöchigen Sommerdürre (_) einem Container erodiertem Sandstein [Streusandqualität] (X) einem Mitglied der Bundesregierung (_) einer Drucksache der Senats*planungs*kommission der Universität Oldenburg (Präsidiumsvorlage) (_) einem Kilo Watt (Schlickwatt, Jadebusen) (_) 5 AOL-CDs (_) einem Sommerreifen-Fahrer bei 20 cm Neuschnee (_) einem fehl*geschla*genen Experiment mit den Genen von Chiap Zap und Marco Desloovere (_) ______1____________________________ Die ausgesprochene Merkbefreiung erlischt mit (_) dem Ablauf der o.g. Frist, beginnend mit dem Zeitpunkt der Ausstellung (_) dem Ablauf des __.__.____ (X) der vollständigen Erosion der körperlichen Bestandteile der o.a. Lebensform und gilt, egal ob die o.a. Lebensform durch das nachstehende Kennzeichen als merkbefreit zu identifizieren ist: (_) schwarze Hose, schwarze Schuhe, weiße Socken (_) eine umgedrehte Baseballkappe (_) olives Stoffstück mit weißem Rand, auf der Schulter zu tragen (X) eindeutig unbefristet merkbefreiter Gesichtsausdruck Befund nach Prüfung durch das Bundesamt: [_] kurzzeitiger Aussetzer durch Übermüdung des Merkerit- deflektionsstudenten. Einstellung eines zweiten solchen wird empfohlen. (_) Hohe Konzentrationen an Trollium und Merkerit (X) Extrem hohe Konzentrationen an Trollium und Merkerit [X] Alle bekannten Therapien sind wirkungslos [_] Einstufung in die Gefahrenklasse [_] ELCH - A I [_] DAU - B II [_] TROLL - DO NOT FEED [_] KASPER - DANCE FASTER! [_] Paranoia naciformis, Analphabetia semantica [_] Microsoftititis Die o.a. Lebensform ist durch den Erwerb dieses Merkbefreiungsscheins automatisch für die folgenden Tätigkeiten qualifiziert: [X] Markierungshütchen bei Ab*markierungs*arbeiten auf Bundesautobahnen [_] Pegellatte in Prielen und Sielen [X] Garderobenständer und Regenschirmständer in Restaurants bis zu, aber nicht eingeschlossen, 3 Sterne [_] Regelstab in Schwer*wasser*reaktoren (Brennelemente britischer Herkunft eingeschlossen) [_] Markierungsstab für das Fahrwasser im Nationalpark Niedersächsisches Wattenmeer [_] Landschaftsmerkmal/Orientierungshilfe in der Wüste Gobi [_] Füllmaterial eines Salzstocks nach dortiger Endlagerung von gebrauchten Brennelementen [_] Müllschlucker für hausmüllähnliche Gewerbeabfälle in Betrieben des Deichbaus Die Merkbefreiung für die o.a. Lebensform wurde in einem öffentlichen Merk*befreiungs*verfahren ausgesprochen und ist nach Ablauf der Einspruchsfrist von 17 Sekunden rechtskräftig. Weitere Auflagen und Entscheidungen: [X] *PLONK* [_] GEH WEG! [_] *PLATSCH* [_] Get a life! [_] *PATSCH* [_] Sie sind raus! [_] *limmib* [X] Geh sterben. [_] 42 [_] _______________ [_] Erlöse den menschlichen Genpool von dir Weitere Betreuung durch: [X] /dev/null - QUARANTÄNE [_] Schwester Johanna [_] Die Hilfspfleger Es wird die/der ( ) vorläufige Aufbewahrung ( ) Zwischenlagerung (X) Endlagerung ( ) Heilungsversuch angeordnet. Weitere Anordnungen: [X] Froschpillenkur ( ) grüne Froschpillen ( ) rosa Froschpillen (X) gestreifte Froschpillen ( ) ___________ Froschpillen [X] Einlauf [_] mit Kamillentee° [X] mit Froschpillen [_] Tackern [_] sonstige Behandlung nach Ermessen der Pfleger [X] Die sofortige Vollziehbarkeit dieses Bescheids wird hiermit angeordnet. Begründung: (_) Notstandsmaßnahme (X) andere [_] unmittelbare Gefahr für die geistige Gesundheit von Lesern [_] ROTFL [X] perfekte Ingoranz seiner Umwelt___ Hochachtungsvoll! Das Bundesamt für die Verwaltung des Nutz-Netzes Dezernat III - Abteilung für Troll-, DAU-, und FAQ-Sachbearbeitung Datum Unterschrift Dienstsiegel [Poststempel] [unleserlich] [Dienstsiegel] Stirnabdruck des Merkbefreiten *PLATSCH* (hm, so weich, die Birne...) MERKBEFREIUNG - MERKBEFREIUNG - MERKBEFREIUNG - MERKBEFREIUNG ------------------------------------------------------------- Wo ist hier das Killfile? |
Re: Z80 Simulator
Herrlichst :mrgreen:
|
Re: Z80 Simulator
habt ihr nix zu tun im leben als mich psychadelic master hier zu beleidigen?
|
Re: Z80 Simulator
Hm, ich kenn das bisher nur ein stück kürzer :) *gleich mal rauskopier und ausgefüllte stellen schwärz, äh, weiß*
@simonko: Wenn man keine Ahnung hat, einfach mal die Fresse halten! |
Re: Z80 Simulator
Zitat:
|
Re: Z80 Simulator
doch ich mach das aber nebenbei. das ist nicht mein einziger lebensinhalt wie bei manchen von euch :)
|
Re: Z80 Simulator
Zitat:
|
Re: Z80 Simulator
Schluss jetzt!
:warn: Fühlt Euch einen Eimer Wasser über den Kopf gekippt. Wer außer Polemik und weiteren Sticheleien nichts zu dem Thema beizutragen hat, der möge seine Finger von der Tastatur nehmen. Ich sage das nur einmal. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:31 Uhr. |
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