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 - XanClic

Seiten: 1 ... 9 10 [11] 12 13 14
201
Lowlevel-Coding / Re: ld gibt falsche Addressen raus
« am: 15. November 2009, 21:32 »
Dann würde ich
LDFLAGS="-Xlinker --build-id=none" ./configureprobieren, wenn der gcc selbst --build-id nicht kennt.
202
Lowlevel-Coding / Re: Hello-Welt Kernel, assembler syntax?
« am: 15. November 2009, 21:31 »
Aber dw ist kein DWord, sondern ein Word. Ein DWord wäre dd :-D
203
Softwareentwicklung / Re: C in Real-Mode
« am: 15. November 2009, 12:25 »
Man kann im Real Mode auch 32-Bit-Register verwenden, das ist nicht das Problem. Das Problem ist nur, dass der Real Mode erstens den Speicher anders als der Protected Mode anspricht (logisch) und dass "normale" Compiler für den Protected Mode sowas natürlich nicht berücksichtigen. Zweitens ist es im Real Mode allgemein so, dass man nur 16-Bit-Code ausführen kann, es ist eben ein 16-Bit-Modus.
204
Offtopic / Re: Frage zu NASM-Lizenz
« am: 15. November 2009, 12:21 »
Zur zweiten Frage: Ja, solange die Bestimmungen nicht "lascher" sind als die der BSD (du kannst NASM-Code dann natürlich nicht in WTFPL-Programmen nutzen  :-D). Also in GPL-Programmen oder auch kommerziellen sollte das IMO ohne Probleme möglich sein.
Auch wenn ich das bezweifle: Wenn du nur fragen wolltest, für welche Programme du NASM benutzen darfst: Du darfst selbstverständlich alle Programme damit assemblieren, egal, unter welcher Lizenz sie stehen. :-D
205
OS-Design / Re: Von USB-Stick booten
« am: 11. November 2009, 18:25 »
Für mich klingt das eher so, als wäre das ein Standardbootsektor, der bei einer Formatierung draufgespielt wird... Du müsstest dir mal irgendwie die ersten 512 Bytes vom Stick ziehen und in einem Hexeditor nachgucken, ob da diese Zeichenketten drinstehen. Wenn ja, hast du wohl was beim Installieren des Bootloaders falsch gemacht. :|

EDIT: Oh, das ist ja Linux. Na, dann zieht man sich den MBR natürlich mit "dd if=/dev/sdX of=boot.bin bs=512 count=1" :-)
206
Lowlevel-Coding / Re: von PM in RM?
« am: 11. November 2009, 18:23 »
In einen PM-Diskettentreiber würde ich das aber nicht einbauen. Da lohnt es sich dann, über vm86 nachzudenken.
207
Lowlevel-Coding / Re: signed und unsigned
« am: 08. November 2009, 12:15 »
Soweit ich weiß, ist es dem Prozessor an sich egal, womit er rechnet (zumindest bei Prozessoren, die negative Werte als Zweierkomplement darstellen). Für den Prozessor ist in einer 32-Bit-Variable der Wert -2 gleich dem Wert 4294967294. Das heißt, wenn ich von einer Variable, die 0 ist, zwei abziehe, kommt immer der Wert 0xFFFFFFFE raus, bei signed entspricht der Wert -2 und bei unsigned 4294967294. Nur, wenn man den Wert mit einem anderen vergleicht, muss der Prozessor wissen, ob es signed oder unsigned ist, dazu benutzt man z. B. bei unsigned die Sprungbefehle "ja" (jump if above) und "jb" (jump if below), um herauszufinden, ob der erste der gerade verglichenen Befehle größer bzw. kleiner als der zweite ist. Bei signed würde man eben "jg" (jump if greater) und "jl" (jump if less) benutzen.

An sich ist es also immer der gleiche Wert, die Unterschiede resultieren erst aus den Vergleichen, würde ich behaupten (wobei ich mich auch nur mit x86-Prozessoren beschäftigt habe).

PS: Natürlich gibt es weitere spezielle Befehle für vorzeichenbehaftete Zahlen, mit denen kann man z. B. eine 8-Bit-Zahl auf 16 Bit erweitern und dabei den Wert behalten, auch wenn sie negativ und damit im Zweierkomplement dargestellt ist.

PPS: Nagelt mich hierdrauf nicht fest. :-D
208
Das Wiki / Re: Umstrukturierung des Forums
« am: 05. November 2009, 20:09 »
Ah, ich hatte mich schon gewundert, ob es früher kein UTF8 gab. :-D
209
Das Wiki / Re: Umstrukturierung des Forums
« am: 05. November 2009, 19:18 »
Ich denke, die Forensoftware hat überhaupt kein Problem damit. Ich nehme nur an, dass viele frühere Posts unter Windows und in einer Kodierung wie Windows-1252 verfasst wurden und man daher heute dort Probleme mit der Darstellung hat. Wenn man sich solche Threads durchlesen will, dann schaltet man am besten die Kodierung manuell um.
210
Lowlevel-Coding / Re: Ringe der CPU
« am: 01. November 2009, 19:57 »
Also, ich muss sagen, dass ich rdtsc auch im Usermode ausführen kann... Weiß nicht, ob Linux da irgendwas besonders macht, aber es gab zumindest keinen Segmentation Fault.

Außerdem sollten die Befehle in allen Ringen möglich sein, deren Wert kleiner oder gleich dem Wert des IOPL-Feldes ist, was man auch noch sagen könnte.
211
Lowlevel-Coding / Re: inp() und outp()
« am: 31. October 2009, 15:44 »
Ich frage mich jetzt nur, wo der Sinn des Postens dieses Codes liegt, da ich ja bereits auf http://wiki.osdev.org/Inline_Assembly/Examples#I.2FO_access verwiesen hatte. :wink:

btw, der Returnwert von inportb ist nicht vom Typ uint32_t, sondern uint8_t. Dasselbe gilt für den Parameter "val" von outportb.
212
Lowlevel-Coding / Re: inp() und outp()
« am: 29. October 2009, 20:47 »
In unserem Wiki gibt es ein direktes Beispiel für Inlineassembler:
http://lowlevel.brainsware.org/wiki/index.php/Inline-Assembler_mit_GCC

Und in der OS-Dev-Wiki gibt es sogar fertige Funktionen:
http://wiki.osdev.org/Inline_Assembly/Examples#I.2FO_access
213
Das Wiki / Re: Umstrukturierung des Forums
« am: 29. October 2009, 16:16 »
Ich finde es an sich so in Ordnung, wie es ist. Einen Unterpunkt "Hardware" fände ich zwar super, aber nach längerem Überlegen fällt das für mich doch in "Lowlevel-Coding". Bootloader fallen ebenfalls darunter. Allgemeines Programmieren wäre natürlich was anderes, aber da stellt sich für mich wirklich die Frage, ob das hierher gehört.
Und dass solche Fragen hier gestellt werden, heißt ja nicht, dass wir sie mit einem eigenen Unterforum unterstützen müssen. :-D
214
Lowlevel-Coding / Re: ASM in C
« am: 28. October 2009, 21:25 »
Da ich annehme, dass du den Computer neu starten willst, bin ich mal so frei, dir Code zu geben, der wohl immer funktionieren sollte:
rebootasm:
mov al,0xFE
out 0x64,al

Deine Funktion springt nämlich afaik in den BIOS-Einsprungspunkt nach einem CPU-Reset und simuliert so einen Reset. Das funktioniert aber nicht, wenn die CPU sich im 32-Bit-Modus befindet, da das BIOS davon ausgeht, im Real Mode ausgeführt zu werden. :wink:
215
Lowlevel-Coding / Re: Verständnisfragen
« am: 15. October 2009, 18:36 »
Ein Tipp:
; Macro for isr stub without an already pushed error code
%macro INT_STUB 1
global intr_stub%1
intr_stub%1:
cli
push byte %1 ; ISR-Number
push byte 0 ; Dummy error code for a uniform stack frame
jmp interrupt_handler_stub
%endmacro
Ich würde das Pushen von Pseudofehlercode und Interruptnummer vertauschen, da ja im Falle eines Fehlercodes zuerst der Fehlercode auf dem Stack liegt und dann die Nummer des Interrupts hinterher gepusht wird. :-)
216
Lowlevel-Coding / Re: Compilerproblem
« am: 15. October 2009, 18:32 »
Das sieht aber so ehrlich gesagt nicht ganz richtig aus, da du string[z] ja noch gar nicht gesetzt hast.
Ich würde es also folgendermaßen machen:
for (z=0; z<79; z++)
{
    // Solange warten, wie der Input Buffer leer ist
    while ((inb(0x64) & 1) == 0) {}

    // Scancode auslesen (dadurch wird die Taste aus dem Input Buffer entfernt)
    scancode = inb(0x60);

    if (scancode & 0x80)
    {
        z--;
        continue;
    }

    string[z] = scantable[scancode];

    if(string[z] == '\n')  //<-- Enter abfragen
    {
        z++;
        break;
    }
}
217
Lowlevel-Coding / Re: Verständnis Frage GDT
« am: 14. October 2009, 19:24 »
Dafür kann man die GDT benutzen, ja. Aber normalerweise will man das nicht.  :-D
Und zwar deshalb, weil Paging ein (zumindest meiner Meinung nach) einfacherer aber genau so wirkungsvoller (wenn nicht sogar besserer) Speicherschutz ist (dadurch verbrauchen kleine Programme nicht genau so viel Speicher wie große, ...).
Deshalb verwendet man Segmente, die über den gesamten Speicher gehen, weil man den Speicherschutz später mit Paging erledigt. :-)
218
Das Wiki / Re: Umstrukturierung des Forums
« am: 11. October 2009, 22:55 »
Diesem Vorschlag stimme ich zu - da ich keinen eigenen entwickeln konnte. :-D
219
Lowlevel-Coding / Re: Compilerproblem
« am: 10. October 2009, 22:08 »
Ich wäre ja für
int z;
char string[80];
volatile int scancode;
static unsigned char scantable[256];

scantable[0x02] = '2';
scantable[0x03] = '3';
scantable[0x1C] = '\n';
//Zu vervollständigen...

for (z = 0; z < 79; z++)
{
    string[z] = scantable[scancode];
    if (string[z] == '\n')
    {
        z++;
        break;
    }
}
//z ist hier höchstens 79. Die 0 passt also auch noch rein.
string[z] = '\0';
220
Lowlevel-Coding / Re: Tastendruck in C
« am: 08. October 2009, 18:46 »
Du arbeitest im Real Mode? Hast du den manuell nach dem Laden durch GRUB gesetzt? Denn normalerweise aktiviert GRUB ja den Protected Mode, bevor es deinen Kernel aufruft. Außerdem bezweifle ich, dass GCC (auf einfache Art und Weise) Code für den Real Mode erzeugen kann.
Im Großen und Ganzen würde ich jetzt also einfach anzweifeln, dass du dich wirklich im Real Mode befindest. Wenn du (unwissentlich) im Protected Mode arbeitest, funktioniert natürlich der BIOS-Interrupt nicht mehr und würde dazu führen, dass dein Computer abstürzt - weil dein Betriebssystem bestimmt noch nicht auf Interrupts vorbereitet ist.
Seiten: 1 ... 9 10 [11] 12 13 14

Einloggen