AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Status-/Flagregister auf Hardwareebene?
Thema durchsuchen
Ansicht
Themen-Optionen

Status-/Flagregister auf Hardwareebene?

Ein Thema von Mr_G · begonnen am 14. Jan 2009 · letzter Beitrag vom 14. Jan 2009
Antwort Antwort
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#1

Status-/Flagregister auf Hardwareebene?

  Alt 14. Jan 2009, 18:06
Hallo zusammen,
ich hab mal wieder eine Frage zum 8086er... Folgendes: Ich habe in meinem Assembler-Buch und im Internet (Wikipedia, i8086.de) gelesen, dass es ein Status- bzw. Flagregister im Prozessor gibt, indem die einzelnen Bits jeweils für ein Flag stehen. Mein Info-Lehrer sagte nun aber, dass so ein Statusregister technisch unsinnig sei, da sich einige Flags auf arithmetische Operationen und einige Flags auf vollkommen andere Bereiche bezeiehen. Er ist der Meinung, dass die Flags demnach als "einzelne Bits" im Prozessor verteilt sind und dieses Statusregister lediglich eine logische Gruppierung sei, die nicht auf Hardwareebene umgesetzt ist.
Nun meine Frage: Was ist denn richtig? Alternativ: Wie komme ich an einen Bauplan eines 8086ers?
Gruß

Mr_G
Jan
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Status-/Flagregister auf Hardwareebene?

  Alt 14. Jan 2009, 18:15
Ich kenne mich mit Hardwarearchitektur wirklich nicht aus, aber mit dem Befehl pushf ist es möglich, alle Flags als DWord auf dem Stack abzulegen. Außerdem wird auch beim Speichern des CPU-Kontexts in einem Task-State Segment (TSS) diese Form verwendet. EFLAGS wird in den Handbüchern als Register-Name gebraucht. Das spricht durchaus dafür, dass die Flags zusammen abgelegt sind.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Status-/Flagregister auf Hardwareebene?

  Alt 14. Jan 2009, 18:16
Also soweit ich weiß, gibt es Befehle, das ganze Statusregister zu "retten", was ja auch sinnvoll und notwendig ist für Multiprocessing-/threading und Ausnahmen-/Unterbrechungsbehandlung. Daher wäre eine Gruppierung auch auf Hardwareebene schon sinnvoll, ansonsten wäre es natürlich sinnvoller, die arithmetischen Register bei der ALU und den Rest da, wo er gebraucht wird, unterzubringen. Aber wie gesagt, aufgrund der Rettungsbefehle und weil die meisten Flags sowieso arithmetisch sind, müsste das schon zusammen in einem Register sein, irgendwo in der Nähe der ALU.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#4

Re: Status-/Flagregister auf Hardwareebene?

  Alt 14. Jan 2009, 18:39
Zitat von Mr_G:
... Mein Info-Lehrer sagte nun aber, dass so ein Statusregister technisch unsinnig sei, da sich einige Flags auf arithmetische Operationen und einige Flags auf vollkommen andere Bereiche bezeiehen. Er ist der Meinung, dass die Flags demnach als "einzelne Bits" im Prozessor verteilt sind und dieses Statusregister lediglich eine logische Gruppierung sei, die nicht auf Hardwareebene umgesetzt ist.
...G
Hallo,

das ist barer Unsinn - es ist völlig wurscht, ob die Statusbits in einem Register nebeneinander angeordnet sind oder sonstwo in der Hardware (wer sollte das denn feststellen - in den Masken danach suchen???). Die Frage ist lediglich, ob man die fraglichen Bits auch als Register am Stück lesen und ev. auch schreiben kann. Das geht aber auch, wenn die Bits aus Status usw. erst im Moment des Lesens auf den Bus zusammengefasst werden, das sagt also auch nichts über den physikalischen Speicherort aus. Wie gesagt, der ist ja auch völlig egal.

Besonders Embedded Prozessoren sind voll von solchen (Pseudo-)Registern, z.B. 8051, da gibt es Register für die Einausgänge ebenso wie für alle Steuerbits, Clock-Teiler, Interrupt-Enables, usw. usw. alles zusammengefasst in einem SFR-File, z.B. 128 Special Function Register. Das steuert die gesamte Hardware. Niemand wird dir oder deinem Lehrer verraten, was wo gespeichert ist.

Gruss Reinhard

Nachtrag: es ist auch für die Funktion völlig egal. Es gibt unzählige Abkömmlinge vom 8051, da ist das sicher auch unterschiedlich gelöst. Und inzwischen bekommst du auch einen 8051 (oder Z80 oder oder) als IP, d.h. als logische Beschreibung, die du selbst in dein FPGA hineincompilieren kannst.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Status-/Flagregister auf Hardwareebene?

  Alt 14. Jan 2009, 19:21
Zitat von Mr_G:
Wie komme ich an einen Bauplan eines 8086ers?
Schau mal bei OpenCores vorbei, dort gibt es sicherlich eine Implementierung einen 8086 für ein FPGA.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Status-/Flagregister auf Hardwareebene?

  Alt 14. Jan 2009, 21:09
Danke erstmal für die Antworten!
Zitat von Reinhard Kern:
Niemand wird dir oder deinem Lehrer verraten, was wo gespeichert ist.
Das ist natürlich Schade...

@generic: Danke für den Tipp. Habe bis dato aber noch nichts gefunden.

@3_of_8 & Apollonius: Das mit dem "retten" und laden der Flags via pushf und popf ist mir auch schon aufgefallen. Das ist natürlich leider nicht aussagekräftig wie Reinhard anmerkte:
Zitat von Reinhard Kern:
Das geht aber auch, wenn die Bits aus Status usw. erst im Moment des Lesens auf den Bus zusammengefasst werden...
Die Sache mit dem zusammenfassen ist natürlich interessant. Die Frage die sich mir dann stellt: Gibt es die "unbenutzen Bits" des sog. Statusregisters dann gar nicht? Prinzipiell würde ja jetzt alles dafür sprechen, dass die Flags "an Ort und Stelle" gesetzt und dann eben später zusammengefasst werden.
Jan
  Mit Zitat antworten Zitat
stefan2005

Registriert seit: 30. Sep 2003
Ort: Puchheim
250 Beiträge
 
Delphi 6 Personal
 
#7

Re: Status-/Flagregister auf Hardwareebene?

  Alt 14. Jan 2009, 22:37
Hi,
hm ich bin zwar keiner der sich auf der dieser Hardwareebene auskennt, aber theoretisch gesehen müssen die Bits bei einem normalen Register wie EAX auch nicht direkt "nebeneinander" liegen, auch wenn man davon ausgehen kann

So gut wie fast jeder Befehl greift auf Register wie EAX zu und kann diese lesen und verändert. Wieso sollte das Statusregister (wenn es von Intel schon Register genannt wurde) nicht auch sich so verhalten wie ein normales Register? Auch auf dieses Statusregister kann jeder Befehl zugreifen und gegebenenfalls ein oder mehrere Flags verändern.
Eine Trennung der Bits auf Hardwareebene würde nur Sinn machen, wenn nur eine kleine Befehlsgruppe darauf zugreift, aber es gibt Flags im Statusregister, die von einer ganzen Reihe unterschiedlicher Befehle verändert werden können. Auch denke ich dass das Trennen der Bits deutlich mehr Aufwand nach sich zieht, um das zu implementieren.

Grüsse,
Stefan
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 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