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

Seiten: [1]
1
Lowlevel-Coding / Linken geht nicht !!!
« am: 07. July 2004, 23:05 »
Ist hier überhaupt noch jemand ???
2
Lowlevel-Coding / Linken geht nicht !!!
« am: 07. July 2004, 17:43 »
Hallo, bin ganz neu hier :-).
Ich wollte mal etwas mit gcc machen & linken,
aber es geht nicht. Ich hab ein Paar Dateien :

/*
edit: Datei kernel.c
  Memory Printing Example
  Written 2003 by Jonas Kramer
  eMail: lizer@gmx.net
*/


#define COLS 80 /* 80 Spalten */
#define ROWS 24 /* 25 Zeilen, bei 0 beginnend */

/* globaler Pointer auf den Beginn des Video Memory */
unsigned short * const pScreen = (unsigned short *) 0xB8000;

unsigned gPos = 0; /* der Cursor */
unsigned short gAttr = 0x0700; /* die Attribute */

#define GETX (gPos % COLS)
#define GETY ((gPos - GETX) / COLS)

void gotoxy(unsigned x, unsigned y);
void putchar(char);
void puts(const char *);

int main(void) {
  char *msg = "Hello, world!"; /* eine Test-String */
  puts(msg); /* den String ausgeben */
  return 0; /* Das funktioniert nur, wenn der Kernel von GRUB geladen
           wurde, ansonsten muss hier eine Endlosschleife hin */
};

void gotoxy(unsigned x, unsigned y) {
  gPos = x + (y * COLS);
  return;
};

void putchar(char ch) {
  switch(ch) {
  case '\n':
    gotoxy(0,GETY + 1);
    break;
  case '\r':
    gotoxy(0,GETY);
    break;
  default:
    pScreen[gPos++] = (unsigned short) ch | gAttr;
    break;
  };
  return;
};

void puts(const char *s) {
  while(*s)
    putchar(*(s++));
  return;
};

Das wäre der Code...
Hier noch der Batch :

gcc -c -ffreestanding -nostdinc -I ./ -O3 -Wall -o kernel.o kernel.c
ld -Ttext 0x100000 --oformat elf32-i386 -O 1 -o kernel kernel.o
pause

Wenn ich den Batch aufrufe, sagt ld
"ld: PE operations on non PE file.".
Dabei ist das doch genau der Code aus Teil 5 !
Habe ich etwas vergessen ???
Seiten: [1]

Einloggen