AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Assembler, kleines Verständisproblem
Thema durchsuchen
Ansicht
Themen-Optionen

Assembler, kleines Verständisproblem

Ein Thema von shareholder · begonnen am 17. Apr 2004 · letzter Beitrag vom 19. Apr 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#11

Re: Assembler, kleines Verständisproblem

  Alt 18. Apr 2004, 16:52
Zitat von Christian Seehase:
dennoch ist in den Opcodes der Befehle auch ein Segmentregister (CS, DS, ES, FS, GS, SS) mit kodiert, dessen Inhalt mit zur Adressbildung herangezogen wird.
Du meinst also, dass für jedes Segment ein eigener logischer Adressraum geschaffen wird? Dieses Verhalten müsste doch betriebssystemabhängig sein, da es eigentlich zu Lasten der Performance geht, wenn man logische Adressräume schafft, obwohl man mit dem Register den gesamten linearen bzw. sogar den gesamten physikalischen Adressraum adressieren könnte. Auf 8086 machte das ja noch Sinn, weil man 20 bit für die Adressierung von 1 MB Speicher braucht, das Register aber nur 16 bit breit war, aber heute? Bei Betriebssystemen, die also gar keine Adressraumtrennung zwischen Prozessen machen, könnte man dann auf eigene logische Adressräume für einzelne Register verzichten, oder sehe ich das falsch?
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Assembler, kleines Verständisproblem

  Alt 18. Apr 2004, 22:40
Moin d3g,

Zitat von d3g:
könnte man dann auf eigene logische Adressräume für einzelne Register verzichten, oder sehe ich das falsch?
könnte man.

In Windows laufen ja mehrere Prozesse "gleichzeitig".
Damit die beim Laden aufgelösten Adressen nicht immer neu berechnet werden müssen, wenn auf einen anderen Thread umgeschaltet wird, macht es Sinn einen definierten Nullpunkt zu haben, relativ zu dem dann adressiert werden kann.

Beispiel:
Ein Prozess wird ausgelagert, da er lange nicht benögtigt wurde.
Jetzt ist der phyiskalische Speicher in dem dieser Prozess lag aber von einem anderen belegt worden.
Um jetzt den ausgelagerten Prozess an eine andere physikalische Adresse zu legen müsste man, ohne Segmentregister, erst einmal alle beim Laden aufgelösten Adressen anpassen. Dies lässt sich umgehen, indem einfach die Segementregister für den Prozess auf einen neuen Wert gesetzt werden.
Schon passen die vorberechneten Werte wieder, da sie relativ zum jeweiligen Segmentregister zugreifen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#13

Re: Assembler, kleines Verständisproblem

  Alt 19. Apr 2004, 17:20
Zitat von Christian Seehase:
Um jetzt den ausgelagerten Prozess an eine andere physikalische Adresse zu legen müsste man, ohne Segmentregister, erst einmal alle beim Laden aufgelösten Adressen anpassen. Dies lässt sich umgehen, indem einfach die Segementregister für den Prozess auf einen neuen Wert gesetzt werden.
Schon passen die vorberechneten Werte wieder, da sie relativ zum jeweiligen Segmentregister zugreifen.
Das klingt einleuchtend. Jedoch hat die Segmentierung nichts mit der physikalischen Adresse im Speicher zu tun, dazu ist das Paging zuständig. Ich habe gerade nachgesehen: Linux zum Beispiel übersetzt eine logische Adresse zuerst über die Segmentation Unit in eine lineare und dann über die Paging Unit in eine physikalische Adresse. Pointer wie ebp könnten dann doch gleich eine lineare Adresse beinhalten, denn das würde einen Performancevorteil ergeben, weil die Adresse nicht zuerst noch per Segmentation in eine lineare Adresse umgewandelt werden muss. Eine zusätzliche Angabe des Registers, auf das sie sich bezieht, ist somit unnötig, zumal der gesamte adressierbare Speicher in ein Register passt und es nicht mehr -- wie auf dem 8086 -- eine zusätzliches Register für Adressierung geben muss.
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: Assembler, kleines Verständisproblem

  Alt 19. Apr 2004, 19:57
Moin d3g,

Zitat von d3g:
...denn das würde einen Performancevorteil ergeben, weil die Adresse nicht zuerst noch per Segmentation in eine lineare Adresse umgewandelt werden muss.
Das erzähl mal Intel

Zitat von d3g:
Eine zusätzliche Angabe des Registers, auf das sie sich bezieht, ist somit unnötig,...
Nur sind in den Opcodes der Befehle die Segmentregister automatisch mit enthalten. Du kommst nicht drum herum.

Wie jetzt ein Betriebssystem die Möglichkeiten eines Prozessors nutzt ist wieder eine andere Sache.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#15

Re: Assembler, kleines Verständisproblem

  Alt 19. Apr 2004, 20:06
Zitat von Christian Seehase:
Das erzähl mal Intel
Was hat Intel damit zu tun? Die Speicherverwaltung ist doch einzig und allein Sache des Betriebssystems.

Zitat von Christian Seehase:
Nur sind in den Opcodes der Befehle die Segmentregister automatisch mit enthalten. Du kommst nicht drum herum.
Wirklich? Warum braucht das Betriebssystem dann noch eine Speicherverwaltung, wenn der Prozessor Segmentation und Paging von selbst macht?

-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Assembler, kleines Verständisproblem

  Alt 19. Apr 2004, 20:15
Moin d3g,

Zitat von d3g:
Die Speicherverwaltung ist doch einzig und allein Sache des Betriebssystems.
Dennoch ist jedes Betriebssystem für die Adressbildung auf die Möglichkeiten der zugrunde liegenden CPU angewiesen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#17

Re: Assembler, kleines Verständisproblem

  Alt 19. Apr 2004, 20:23
Zitat von Christian Seehase:
Dennoch ist jedes Betriebssystem für die Adressbildung auf die Möglichkeiten der zugrunde liegenden CPU angewiesen.
Nun ja, die CPU sollte doch bei Angabe einer physikalischen Adresse auf diese zugreifen können. Wenn es eine CPU gibt, die das nicht kann, dann möchte ich wissen, wie das Betriebssystem Paging vollzieht. Schließlich ist das Resultat des Pagings eine physikalische Adresse. Wenn die CPU nun auf den Speicher anhand physikalischer Adressen zugreift, ist die eiegentliche Speicherverwaltung doch komplett in der Hand des Betriebssystems. Und an dieser Stelle stellt sich für mich die Frage: warum Pointer in einem logischen Adressraum verwenden, wenn man sie doch gleich im linearen Adressraum verwenden könnte?
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 12:39 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