Hallo, ich hab grad ein Buch über Assembler gelesen und ich stell mir die Frage,
...wie die Speicherverwaltung aussieht, wenn mehrere Prozesse ausgeführt werden. Wenn Prog A nun einen Wert in ein Register/ Speicherstelle im Ram schreibt, könnte Prog B den Wert doch unwissentlich verändern und Prog A merkt gar nichts davon.
...ob es eine Performanceänderung gibt, wenn ich eine .inc include, von der ich aber nur ein paar Variablen benutze, im Gegensatz von einer .inc, die nur die benutzten Variablen enthält.
...wie ich eine .com-Datei erstellen kann und wo es Infos darüber gibt.
...ob es den Quellcode von qeditor irgendwo gibt.
Viele Grüße
Coke
viele Anfängerfragen
Moderatoren: crack, Krüsty, Marwin
- crack
- Administrator
- Beiträge: 280
- Registriert: Dienstag 21. Dezember 2004, 15:02
- Wohnort: 53783 Eitorf
- Kontaktdaten:
Re: viele Anfängerfragen
Das sind gute Fragen, die sich sicherlich auch andere schon gestellt haben:
Seit dem 286er unterstützt ein spezielles Hardware Feature die exclusive Zuweisung von Speicher für die verschiedenen Anwendungen, dieses Feature (virtual Mode) konnten allerdings erst Multitasking Betriebsysteme also Windows und Linux nutzen. Die Speicherzuweisung wir über die Global Descriptor Tables (GDT) und die Local Descriptor Tables (LDT) bewerkstelligt.Cok3.Zer0 hat geschrieben:Hallo, ich hab grad ein Buch über Assembler gelesen und ich stell mir die Frage,
...wie die Speicherverwaltung aussieht, wenn mehrere Prozesse ausgeführt werden. Wenn Prog A nun einen Wert in ein Register/ Speicherstelle im Ram schreibt, könnte Prog B den Wert doch unwissentlich verändern und Prog A merkt gar nichts davon.
Jein, auf jeden Fall verschlingen deklarierte aber nicht genutzte Variablen Speicherplatz, auf die Performance dürfte sich das nur auswirken wenn der dem Programm zur Verfügung stehende Speicher arg begrenzt ist.Cok3.Zer0 hat geschrieben: ...ob es eine Performanceänderung gibt, wenn ich eine .inc include, von der ich aber nur ein paar Variablen benutze, im Gegensatz von einer .inc, die nur die benutzten Variablen enthält.
Du erstellst eine .exe und wandelst diese per 'EXE2BIN' in eine .com, oder Du benutzt den Assembly Compiler 'A86' von Eric Isaacson, wenn Du dort den Programm Entry Point auf 0100h setzt wird normalerweise automatisch eine .com Datei erzeugt.Cok3.Zer0 hat geschrieben:
...wie ich eine .com-Datei erstellen kann und wo es Infos darüber gibt.
Meines Wissens nach nicht, aber Steve Hutchesson hat dem MASM32 Paket eine ähnlichen 'Open Source' Editor zugefügt.Cok3.Zer0 hat geschrieben: ...ob es den Quellcode von qeditor irgendwo gibt.
Viele Grüße
Coke
mit freundlichen grüssen,
with best regards,
crack
with best regards,
crack
Re: viele Anfängerfragen
Danke für die Antwort!
Zu 1: Wandelt das Betriebsystem oder der Prozessor selbst die Speicheranfragen in andere um?
Aber wenn nun ein Wert im AX-Register gespeichert ist und nun ein anderer Prozess Rechenzeit zugewiesen bekommt, wird dann der Wert in den Arbeitspeicher geschrieben? ( Und von wem? )
Zu 3: EXE2BIN versteh ich so, dass die in hexadezimale Exe in eine duale Com umgewandelt wird.
Aber die hexadezimale muss doch auch irgendwie zur Laufzeit übersetzt werden, denn der Prozessor versteht nur Dual.
Müsste denn nicht eine duale Datei schneller ausgeführt werden als eine hexadezimale?
PS:
Viele Grüße
Alex
Zu 1: Wandelt das Betriebsystem oder der Prozessor selbst die Speicheranfragen in andere um?
Aber wenn nun ein Wert im AX-Register gespeichert ist und nun ein anderer Prozess Rechenzeit zugewiesen bekommt, wird dann der Wert in den Arbeitspeicher geschrieben? ( Und von wem? )
Zu 3: EXE2BIN versteh ich so, dass die in hexadezimale Exe in eine duale Com umgewandelt wird.
Aber die hexadezimale muss doch auch irgendwie zur Laufzeit übersetzt werden, denn der Prozessor versteht nur Dual.
Müsste denn nicht eine duale Datei schneller ausgeführt werden als eine hexadezimale?
PS:
Was ist der Unterschied, wenn ich anstatt .486 .386 oder .586 schreibe, ist doch alles 32 bit?.486 ; create 32 bit code
.model flat, stdcall ; 32 bit memory model
Viele Grüße
Alex
- crack
- Administrator
- Beiträge: 280
- Registriert: Dienstag 21. Dezember 2004, 15:02
- Wohnort: 53783 Eitorf
- Kontaktdaten:
Re: viele Anfängerfragen
Die Speicherverwaltung/Zuweisung besorgt Windows/Linux und die Northbridge.Cok3.Zer0 hat geschrieben:Danke für die Antwort!
Zu 1: Wandelt das Betriebsystem oder der Prozessor selbst die Speicheranfragen in andere um?
Multitaskingbetriebsysteme in einer Single Protessor/Core Umgebung bedienen die Task nacheinander, wird von einem Task zum nächsten geschaltet werden die Registerwerte des Prozessors auf einem Softwarestapel abgelegt, und beim erneuten bedienen des Tasks von dort zurückgeholt.Cok3.Zer0 hat geschrieben: Aber wenn nun ein Wert im AX-Register gespeichert ist und nun ein anderer Prozess Rechenzeit zugewiesen bekommt, wird dann der Wert in den Arbeitspeicher geschrieben? ( Und von wem? )
Auch die Exe ist DualCok3.Zer0 hat geschrieben: Zu 3: EXE2BIN versteh ich so, dass die in hexadezimale Exe in eine duale Com umgewandelt wird.
Aber die hexadezimale muss doch auch irgendwie zur Laufzeit übersetzt werden, denn der Prozessor versteht nur Dual.
Müsste denn nicht eine duale Datei schneller ausgeführt werden als eine hexadezimale?
Ja, es sind alles 32Bit Prozessoren, aber die Maschinenbefehlssätze sind bei 486 und 586 (Pentium) umfangreicher, ein Programm für .386 Plattform läuft natürlich auch auf einem Pentium ...Cok3.Zer0 hat geschrieben: PS:Was ist der Unterschied, wenn ich anstatt .486 .386 oder .586 schreibe, ist doch alles 32 bit?.486 ; create 32 bit code
.model flat, stdcall ; 32 bit memory model
Viele Grüße
Alex
mit freundlichen grüssen,
with best regards,
crack
with best regards,
crack
Re: viele Anfängerfragen
Vielen Dank für die Antworten 