Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - DarkThing

Seiten: 1 ... 27 28 [29] 30 31 32
561
Das Wiki / Ausgabe 7
« am: 14. April 2005, 18:26 »
Wer macht es sonst? Um was gehts eigentlich in Vermischtes, ein Beispiel wär ganz nett?
562
Das Wiki / Community-OS
« am: 14. April 2005, 18:25 »
AFAIK nein. Aber ich einen Tipp: Schreibt euch eine wirklich gute Funktion dafür, die aber nicht die Zeichen selber anzeigt. Dafür macht man eine Hilfsfunktion:


typedef int (* fnptr_t) (unsigned c, void** helper);

int printfhelp(unsigned c, void **ptr)
{
// Hier wird das Zeichen angezeigt
}

int doprintf(const char *fmt, va_list args, fnptr_t fn, void *ptr)
{
// Hier den Text analysieren und ein Zeichen mit Hilfe des Function
// Pointers ausgeben
// Leerzeichen ausgeben (als Beispiel)
fn(' ', &ptr );
}

void printf(const char *msg, ...)
{
// Parameter zusammensetzen
va_list printfargs;
va_start(printfargs, msg);

// Der letzte Parameter ist ein Function Pointer auf die
// Funktion für die eigneltiche Zeichenausgabe
doprintf(msg, printfargs, printfhelp);

va_end(printfargs);
}

Das hat den Vorteil das man den Teil für die eigentliche Textausgabe jederzeit variiren kann. Z.B. könnte man verschiedene Treiber für Farbe & Schwarzweiß erstellen und dann nur den Function Pointer ändern.

Ich weiß die Erklärung ist nicht so verständlich aber wenn jemand fragen dazu hat kann er ja fragen  :wink:
563
Das Wiki / Blöde Frage zum CommOS
« am: 14. April 2005, 15:26 »
Versuch mal coff statt aout also:

nasm -f coff -o kernel32.obj kernel32.asm
564
Das Wiki / Blöde Frage zum CommOS
« am: 14. April 2005, 15:00 »
Eigentlich ist nur kernel.c und kernel32.asm wichtig

bits 32
%include "macros.asm"
global start
start:
mov ax,0x10
mov ss,ax
mov ds,ax
mov fs,ax
mov gs,ax
mov es,ax
mov eax,0x9FFFF
mov esp,eax
mov ebp,eax

finit ;prepare the FPU so it can be used without problems

activateA20:
.1:
in al, 0x64
test al, 00000010b
jnz .1
mov al, 0xD0
out 0x64, al
.2:
in al, 0x64
test al, 00000001b
jz .2
in al, 0x60
or al, 00000010b
push eax
.3:
in al, 0x64
test al, 00000010b
jnz .3
mov al, 0xD1
out 0x64, al
.4:
in al, 0x64
test al, 00000010b
jnz .4
pop eax
out 0x60, al

remappic: ;IRQ's start with Int 0x20, directly after the exceptions
mov al,0x11  
out 0x20,al    
out 0xa0,al
mov al,0x20        
out 0x21,al
mov al,0x28      
out 0xa1,al
mov al,0x04
out 0x21,al
mov al,0x02  
out 0xa1,al
mov al,0x01
out 0x21,al
out 0xa1,al

extern _main
call _main

jmp $

Interessant ist
extern _main
call _main
In kernel32.asm und void main() in kernel.c

Wie compilierst du das? Zuerst alle Files in Objects machen und erst dann  alle linken!
565
Das Wiki / Blöde Frage zum CommOS
« am: 14. April 2005, 14:45 »
Das ist ein Fehler vom Linker. Du scheinst eine Funktion aufzurufen die __main heißt. Poste mal den Code wo die Funktion exportiert/importiert und aufgerufen wird.
566
Das Wiki / Ausgabe 7
« am: 14. April 2005, 14:39 »
AFAIK fehlt nur noch ein Bereich. Ich glaub der hieß Vermischtes. Also: Bals is es so weit. Ausgabe 8 wird auch schnell gehen weil so viel geschrieben wurde das noch etwas für die nächste Ausgabe bleibt.
567
Das Wiki / Ausgabe 7
« am: 14. April 2005, 13:37 »
Jo den Thread kann man echt mal in Offtopic verlegen, Ausgabe 7 ist immerhin fast fertig.
568
Lowlevel-Coding / Assembler als methode?
« am: 14. April 2005, 13:28 »
Beispiel fürs Mischen von ASM und C
Ich kann nicht garantieren das das geht aber der Ansatz stimmt.

xyz.asm

[section .text]
[BITS 32]

global _AddToAX ; Funktion exportieren

; Die Funktion selber
; Fängt mit _ an weil der C Compiler allen Funktionen
; dieses Zeichen voranstellt
_AddToAX:
POP BX ; 1. Parameter vom Stack holen -> In BX schreiben
ADD AX, BX ; BX zu AX addieren
; Zurück
ret


xyz.c

extern void AddToAX(char x); /* Funktion importieren (ohne _!!!) */

void main()
{
    AddToAX(100);
}


Compilieren & Linken:
nasmw.exe -f coff -o x_asm.o x.asm
gcc.exe -c -ffreestanding -fwritable-strings -nostdinc -Wall *.c
ld.exe -Ttext 0x100000 --oformat binary -nostdlib -o KERNEL.BIN *.o
569
Das Wiki / Ausgabe 7
« am: 13. April 2005, 14:10 »
Damit wollte ich sagen dass ich Englisch nur als 2. Fremdsprache hab also noch nicht so der Meister da bin.   :wink:
570
Lowlevel-Coding / Assembler als methode?
« am: 13. April 2005, 14:09 »
Pushen geht AFAIK nur per Inline Assembler, was ja in dem Fall nicht sinnvoll ist... Man könnte sich ne funktion dafür schreiben! Irgendwie so: void Push(char dat);
Wenn man in C eine Funktion aufruft werden die Parameter über den Stack übergeben.  Das heißt das eine externe dazu gelinkte Assembler Datei eine Funktion exportieren kann in der die Parameter am Anfang vom Stack geholt werden.
571
Lowlevel-Coding / Assembler als methode?
« am: 13. April 2005, 14:00 »
Dafür braucht man eine erweiterte Form vom Inline Assembler (bei DJGPP ist das jedenfalls so, bei manchen Compilern kann man Vars ganz normal verwenden). Diese erweiterte Form ist in ner gewissen Art schrecklich und man braucht viel eingewöhnungszeit. Auf www.osdever.net müsste es ein Tutorial darüber geben.
572
Lowlevel-Coding / FPGA & Prozessorprogrammierung
« am: 13. April 2005, 13:58 »
Wirklich wichtg sind Sprungbefehle. Vor allem beim cmp Befehl braucht man die. Ich glaube das 2/3 aller Befehle von 486er Sprungbefehle sind, aber 2-3 sollten reichen.
573
Das Wiki / Blöde Frage zum CommOS
« am: 13. April 2005, 13:55 »
Den Bootloader natürlich mit nasm compilieren. Den C Teil sollte man mit dem Linker Script link.txt machen. Sorry aber ich weiß nicht genau wie man das macht, weil ich für meine eigenen Projekte nie so was erwendet habe.
574
Das Wiki / Ausgabe 7
« am: 13. April 2005, 13:50 »
Wie kommt ihr darauf dass ich Litauen mit Latein verbinde? Ich weiß das Latein nirgendwo gesprochen wird und irgendwie fürn Arsch ist ^^

Verständigung mit dem StormOS Entwickler ist kein Problem gewesen (Englisch ist nicht fürn Arsch *g*). Ich denke das man aber das ich vielleicht noch warte bis es neue Screeshots gibt und wenn das zu lange dauert nehmen wir die bisherigen.
575
Lowlevel-Coding / Assembler als methode?
« am: 12. April 2005, 17:33 »
Der C Compiler macht aus dem Source ein ASM Listing. Wenn er dabei auf Assembler Code stößt (das heißt dann Inline Assember) wird der Assebler Code fast 1 zu 1 kopiert. Das heißt das man einen Teil in Inline Assembler schreiben kann um den zu beschleunigen aber meistens wird man es verwenden um Aktionen durchzuführen die in C nicht gehen.
576
Lowlevel-Coding / FPGA & Prozessorprogrammierung
« am: 12. April 2005, 17:20 »
Irgendwie schon richtig aber man könnte sich etwas Arbeit sparen.
Machen wir mal ne Pro & Contra Liste: ^^
Pro ist für Intel-Kompatible Befehle und Contra dagegen

Pro:
o Kein neuer Assembler
o Hört sich professionell an ;)

Contra:
o Man lernt weniger dabei
o Ist fast komplizierter als nen eigenen Befehlssatz

Wenn ich mir das so ansehe: Mach nen eigenen Beehlsatz  :D
577
Das Wiki / Community-OS
« am: 12. April 2005, 14:24 »
Macht wirklich Sinn - solange man eine gewisse Ordnung reinbringt. Eine andere Möglichkeit wäre einen eigenen Bereich im Forum anzulegen.
578
Offtopic / OS für Handys
« am: 12. April 2005, 14:21 »
Da meiste Interessante wird der Emulator gar nicht beinhalten, z.B. ist es doch egal wie das Display angesteuert wird weil man das ja mit Windows Funktionen macht. Aber ich werde auf jeden Fall mal shen ob ich einen finde.
579
OS-Design / MenuetOS
« am: 12. April 2005, 14:15 »
Ich denke nicht das einer Interesse hat, weil die meisten ihr eigenes OS oder CommOS coden und vermutlich wenig Lust haben ein anderes OS mit Kommentaren zu versehen. Aber ansonsten ist die Idee gar nicht mal so schlecht. Noch ein Tipp: Ich denke MenuetOS ist ziemlich umfangreich also erstmal nur die wichtigsten Teile bearbeiten.
580
Lowlevel-Coding / FPGA & Prozessorprogrammierung
« am: 12. April 2005, 14:11 »
Ich find so Sachen immer cool, auch wenn ich keine genaue Vorstellung hab wie ihr das macht. Also bei joachim schleimen und das Tagebuch ins Magazin schreiben.
Wenn man sich bei den Befehlen an Intel-Kompatible CPUs hält, muss man sich keinen eigenen Assembler schreiben (man muss ja nur die Grundbefehle einbauen und den Rest einfach nicht verwenden).
Seiten: 1 ... 27 28 [29] 30 31 32

Einloggen