Autor Thema: Anfänger Fragen  (Gelesen 6328 mal)

killer04

  • Beiträge: 9
    • Profil anzeigen
Gespeichert
« am: 03. August 2007, 22:09 »
Hi,
Ich interressiere mich seit ein paar Wochen für OS Dev!
Bin über Google hier gelandet und muss sagen tolle Page *respect* :-o.
So nun zu meinen Problemen:
1.) Ich hab mir die Funktionen um mit dem Videospeicher zu arbeiten von Teejay geholt und habe sie auch in den Header Files etc. eingebunden.
So nun braucht er ja noch die setmem und memcpy.
Die sind ja in dem Tut in asm. So nun hab ich die beiden Funktionen in der kernel32.asm als global reingesetz aber beim compilen kommt der Fehler das er die Funktionen nicht finden kann, deshalb meine Frage wie muss ich die Funktionen in asm einbinden damit er darauf zugreifen kann?

2.) Ich kann zwar C/C++ jedoch kein ASM, lohnt es sich ASM zu lernen? Wenn ja welche Syntax? AT&T?

3.) Ich muss ja die ganzen Funktionen für C nachbauen geht das nur mit ASM? weil die beiden Funktionen sind ja jetzt auch schon in asm erstellt worden. bzw. gibt es ein gutes tut wo erklärt wird wie man am besten diese ganzen Funktionen nachbaut?

Hoffe es war verständlich :-D
MFG killer04

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #1 am: 03. August 2007, 22:15 »
Die sind ja in dem Tut in asm. So nun hab ich die beiden Funktionen in der kernel32.asm als global reingesetz aber beim compilen kommt der Fehler das er die Funktionen nicht finden kann, deshalb meine Frage wie muss ich die Funktionen in asm einbinden damit er darauf zugreifen kann?
Du musst sie in C als "extern" deklarieren. Danach aus der kernel32.asm eine Objektdatei mit dem assembler machen. Mit dem Compiler eine/mehrere Objektdatei aus deinem C-Sourcecode machen und anschließen beides mit dem Linker zu einer ausführbaren datei zusammenfügen. Sehr wahrscheinlich brauchst du auch ein linkerscript dazu.

Zitat
2.) Ich kann zwar C/C++ jedoch kein ASM, lohnt es sich ASM zu lernen? Wenn ja welche Syntax? AT&T?
Ich würd intel syntax empfehlen, da das meiste in dieser Syntax geschrieben ist. Und ja es lohnt sich auf jeden Fall. Man muss zwar nicht sein ges. OS darin schreiben, aber Teile werden mit sicherheit in asm sein.

Zitat
3.) Ich muss ja die ganzen Funktionen für C nachbauen geht das nur mit ASM?
Du meinst die C Standardbibliothek? Nein. Man kann eigentlich alles mit C machen. Nur wo syscalls ins spiel kommen wirst du ein wenig inline assembler brauchen.
edit: In einem programm im userspace braucht man doch noch einen kleinen Stub, welche die C main() Funktion aufruft.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

killer04

  • Beiträge: 9
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 06. August 2007, 22:10 »
Hi,
Kannst du mir ein spezielles ASM Tut empfehlen?
Über google finde ich zwar viele ASM tuts die sind aber meistens für den AVR Chip aber den möchte ich ja nicht programmieren.
Und wenns dann mal andere sind sinds welche für Tasm aber ich will Nasm!
Für die Intel Syntax spezifisches hab ich kein Tut gefunden!

MFG killer04

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #3 am: 07. August 2007, 12:20 »
http://www.drpaulcarter.com/pcasm/pcasm-book-german.zip
Wichtig ist auch, dass du die Intel Manuals lesen & verstehen kannst. Die enthalten alles was es zu den Befehlen zu wissen gibt.
Du kannst dir auch mal die Ausgaben des Lowlevel Magazins ansehen, da sollte eigentlich auch was dabei sein...

btw. der Unterschied zwischen NASM, TASM & MASM beschränkt sich afaik auf die Pseudoinstruktionen (zB times, makros, etc...).
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 07. August 2007, 17:29 »
Ja ich habe Assembler von Marcus Roming + Joachim Rohde (mitp - Grundlagen der Programmierung)

Obwohl ich zuerst mit TASM geproggt habe (masm find ich doof) ging der Umstieg nach Nasm sehr einfach, vorallem weil hier und auch anderswo  hauptsächlich alle Tuts und Codebeispiele in Nasm Syntax abgefasst sind...

(Nur das PM-Tut von der FH-Zwickau ist das nicht...hat mich sehr geärgert)

Gruss
Noooooooooooooos

killer04

  • Beiträge: 9
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 13. August 2007, 20:27 »
Hi,
(Nur das PM-Tut von der FH-Zwickau ist das nicht...hat mich sehr geärgert)

Meinste damit zufällig das?:
http://www.fh-zwickau.de/doc/prmo/start.htm
Bzw. ist dieses Tut auch zu empfehlen?

MFG killer04

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 13. August 2007, 21:02 »
Ja das mein ich...die Theorie wird eigentlich nicht schlecht erklärt, nur eben ist das Problem dass der Code nicht NASM konform ist...

Und der Code für Multitasking ist leider sehr unfangreich und es würde eine ziemliche Mühe machen ihn abzuändern...

Also das Tut ist bis auf den Code sehr gut brauchbar...


Gruss
Nooooooooooos

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 14. August 2007, 10:47 »
Das ist aber auch nicht wirklich nötig, solange du dir nicht per Copy&Paste ein OS zusammenbasteln willst. Solange ich als Mensch es interpretieren kann, ist es mir eine Hilfe. Programmiert wird das ganze hinterher sowieso in einer höheren Sprache.

Grundsätzlich würde ich das Tut auch empfehlen, aber es ist nicht fehlerfrei.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

 

Einloggen