hi!
kann ich mit dem gcc 16 bit C code erzeugen? waenn ja wie? ich hab bei google nichts gefunden!
/*edit*/
ich hab mir nun von dem bcc folgenden asm code generieren lassen:
(die c datei:
/*nur mal n experimenteller abgeschriebener code*/
int main(){
char *text = "Hi I am the Railex Kernel";
char *vidMem = (char*) 0xB800;
while(*text){
*vidMem = *text;
*vidMem++;
*vidMem = 7;
*vidMem++;
*text++;
}
return 0;
}
)
! 1
! 1 /* kernel
! 2 *
! 3 *
! 4 *
! 5 *
! 6 *
! 7 */
! 8
! 9 int main(){
export _main
_main:
! 10 char *text = "Hi I am the Railex Kernel";
push bp
mov bp,sp
push di
push si
dec sp
dec sp
mov bx,#.1
mov -6[bp],bx
! 11 char *vidMem = (char*) 0xB800;
dec sp
dec sp
mov ax,#$B800
mov -8[bp],ax
! 12
! 13 while(*text){
jmp .3
.4:
! 14 *vidMem = *text;
mov bx,-6[bp]
mov si,-8[bp]
mov al,[bx]
mov [si],al
! 15 *vidMem++;
inc word ptr -8[bp]
mov bx,-8[bp]
mov al,*7
mov [bx],al
! 17 *vidMem++;
inc word ptr -8[bp]
mov bx,-8[bp]
! 18 *text++;
inc word ptr -6[bp]
.3:
mov bx,-6[bp]
mov al,[bx]
test al,al
jne .4
.5:
.2:
xor ax,ax
add sp,*4
pop si
pop di
pop bp
ret
! 22 }
! 23
.data
.1:
.6:
.ascii "Hi I am the Railex Kernel"
.byte 0
.bss
! 0 errors detected
dann hab ich dieses mit folgenden zeilen assembliert und gelinkt:
as86 -0 kernel.asm -o kernel --> assembliert(dieses -0 bedeuted laut man page: -0 start with 16-bit code segment, warn for all instructions > 8086)
ld86 kernel.o -> zu a.out gelinkt
dann hab ich das auf die diskette gepackt mit einem selbst geschriebenen programm das die datei nach den ersten 512 bytes der diskette kopiert
(mein bootloader funkt 100pro da ich mit diesem schon nen asm kernel booten konnte!)
waenn ich meinen pc nun starte und die disk einlege dann kommen die meldungen von meinem bootloader und dann macht mein pc nichts mehr
was kann es da haben ?
danke!