Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
c.m.obrecht
Anmeldungsdatum: 09.03.2006 Beiträge: 377 Wohnort: Hofstetten SO, CH
|
Verfasst am: 18.06.2006, 09:09 Titel: asm - Was passiert im Hintergrund (WinAPI und DOS-Interrupts |
|
|
Wie bringt DOS mit dem int 21h beispielsweise etwas auf den Bildschirm? Und WinAPI das Selbe, beispielsweise ein Text in einem Fenster (und das Fenster selbst); was wären das für asm-Codes? Passiert bei DOS und WIndows da etwas ähnliches?
Das Thema über Programm ohne Betriebssystem hat mich inspiriert; wenn man diese Routinen schreibt anstatt vom Betriebssysem aufruft könnte man ja ein Programm erstellen welches ohne Betriebssystem lauft... |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 18.06.2006, 11:49 Titel: |
|
|
Microsoft kocht auch nur mit Wasser. Windows setzt die Pixel ebenso nach Koordinaten auf den Bildschirm. Der Unterschied zwischen selber machen und Windows ist, dass Windows die Grafikkarten alle persönlich kennt (~"hat einen Treiber für sie") und kann sie somit gezielt ansprechen kann, was besser ist, als auf VESA Funktionen zurückgreifen zu müssen, was der Normalprogrammierer machen will, wenn er ohne Win programmieren will. _________________
Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
c.m.obrecht
Anmeldungsdatum: 09.03.2006 Beiträge: 377 Wohnort: Hofstetten SO, CH
|
Verfasst am: 18.06.2006, 13:50 Titel: |
|
|
Habe ich noch gedacht; werden die Pixel in den Speicher geschrieben und an die Grafikkarte übertragen wie in einem asm-Beispiel. Ist das bei DOS-Interrupts auch so, wenn Text ausgegeben werden soll?
Ich habe ein Windows-Programm schon disassembliert, verständlich ist es danach kaum mehr ausser ich finde eine selbst geschriebene asm-Routine wieder. Ist dort das Übertragen der Pixel usw. ersichtlich; mit den stosd usw-Befehlen? |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 18.06.2006, 13:54 Titel: |
|
|
Öhm, wie Microsoft das alles genau macht, kann ich dir nicht sagen, Windows ist kein Open Source Programm...
Windowsprogramme setzen aber nicht die Pixel usw. selbst oder sprechen die GraKa an, sie rufen die Windowseigenen Funktionen für alles mögliche auf. In einer notepad.exe o.ä. wirst du keine Assemblercodes zum Ansprechen der Grafikkarte oder der Festplatten etc. finden. In den Anwendungen sind Referenzen auf die fertigen Funktionen dazu eingebaut. _________________
Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
c.m.obrecht
Anmeldungsdatum: 09.03.2006 Beiträge: 377 Wohnort: Hofstetten SO, CH
|
Verfasst am: 18.06.2006, 22:17 Titel: |
|
|
Klar, wie wenn man in FB oder asm WinAPI benützt. Mich interessiert eben was diese dann tun, auf Assemblerebene...
Der Disassembler/Debugger zeigt meines WIssens alles an, auch die externen Funktionen als asm nur allzuviel kann ich da nicht erkennen; es werden dauernd Speicheradressen berechnet und Dinge ge"pusht" und gepopt (wie auch FreeBasic wenn man die asm-Codes anschaut). |
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 19.06.2006, 19:14 Titel: |
|
|
c.m.obrecht hat Folgendes geschrieben: | Der Disassembler/Debugger zeigt meines WIssens alles an, auch die externen Funktionen als asm nur allzuviel kann ich da nicht erkennen; |
Das stimmt nicht.
Die WinAPI wird (in der Regel) erst bei Laufzeit eingebunden. Das heisst, du findest die WinAPI Funktionen nicht in deiner Exe Datei sondern bloss den Zugriff.
Zum Vorstellen:
Wenn ein Programm auf Windows 95 geschrieben wurde, erscheint die Titelleiste bei XP trotzdem Quitsch Bunt und umgekehrt (auf XP geschrieben aber auf Win 95 laufen) Maus Grau.
Ich halte es für eine Schlechte Idee, die WinAPI in Asembler anzusprechen, das ding fliegt (zu mindest mir) auch in Freebasic oft genug um die Ohren.
c.m.obrecht hat Folgendes geschrieben: | Das Thema über Programm ohne Betriebssystem hat mich inspiriert; wenn man diese Routinen schreibt anstatt vom Betriebssysem aufruft könnte man ja ein Programm erstellen welches ohne Betriebssystem lauft... |
Das kann schnell nach hinten los gehen, wenn man Windows Systematisch umgeht, blockiert Windows das Programm weil es ein Sicherheitsrisiko ist.
Aus dem "es läuft auch ohne Betriebssystem" wird dann schnell "es läuft nur ohne Betriebssystem" _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
|
c.m.obrecht
Anmeldungsdatum: 09.03.2006 Beiträge: 377 Wohnort: Hofstetten SO, CH
|
Verfasst am: 19.06.2006, 19:19 Titel: |
|
|
Ah ja, sicher? Ich meinte die DLLs usw. waren angegeben; sprünge dazu und dann der Code der dort vorhanden ist.
Natürlich, ist auch mehr ein Versuch... auch wenn es nur ohne Betriebssystem läuft. _________________ ...längre blomstre gamle nord... |
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 19.06.2006, 19:39 Titel: |
|
|
Wenn die DLL in der jeweiligen Exen wären brauchte man die DLL's nicht.
Der Deasembler ist ein selten dämliches Programm (so jetzt ist es gesagt ), es analysiert den Code einfach Byte für Byte und sieht nach/berechnet welche Byte zusammen gehören und welchen ASM Befehl sie meinen oder manchmal auch meinen könnten.
Ich bezweifle, das der Deasembler auch noch alle zugehörigen DLL's deasambleriert (aufwendig und auch oft Verboten (z.B. bei Windows, weil Urheberrecht bei Microsoft)).
Zitat: | und Dinge ge"pusht" und gepopt (wie auch FreeBasic wenn man die asm-Codes anschaut). |
Das ewige Pushen und Poppen finde ich genial, wenn du es dir genauer anschaust, wird die vielleicht auf fallen, das es sich oft um die Parameter von Funktionen und Subroutinen handelt.
Zitat: | es werden dauernd Speicheradressen berechnet |
Ja, Pointer halt, wird ja auch schon für das einfachste Array gebraucht. _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
|
c.m.obrecht
Anmeldungsdatum: 09.03.2006 Beiträge: 377 Wohnort: Hofstetten SO, CH
|
Verfasst am: 20.06.2006, 11:18 Titel: |
|
|
Klar sind sie nicht in der EXE-Datei.
Ich muss vielleicht bemerken; es handelt sich m einen Disassembler/Debugger (w32dasm oder so), der zeigt eine Liste mit DLLs und Sprünge dazu wo weiterer Code folgt, während der Laufzeit (logischerwise wenn man das Programm im Debuger startet). _________________ ...längre blomstre gamle nord... |
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
|
Nach oben |
|
|
c.m.obrecht
Anmeldungsdatum: 09.03.2006 Beiträge: 377 Wohnort: Hofstetten SO, CH
|
Verfasst am: 20.06.2006, 20:37 Titel: |
|
|
Ah OK; demfall schon. Habe auch nicht daran gedacht dass w32dasm mehr kann als ein reiner DIsassembler
So sind also alle Vorgänge sichtbar; auch welche die man nicht selber programmiert? Wer das was man dort sieht nachvolziehen kann muss ja gut sein... _________________ ...längre blomstre gamle nord... |
|
Nach oben |
|
|
|