Я строю 16-битную операционную систему. Но массив символов, похоже, не работает.
Вот мой пример кода ядра:
asm(".code16gcc\n");
void putchar(char);
int main()
{
char *str = "hello";
putchar('A');
if(str[0]== 'h')
putchar('h');
return 0;
}
void putchar(char val)
{
asm("movb %0, %%al\n"
"movb $0x0E, %%ah\n"
"int $0x10\n"
:
:"m"(val)
) ;
}
Он печатает:
A
означает, что функция putchar работает нормально, но
if(str[0]== 'h')
putchar('h');
не работает.
Я компилирую это:
gcc -fno-toplevel-reorder -nostdinc -fno-builtin -I./include -c -o ./bin/kernel.o ./source/kernel.c
ld -Ttext=0x9000 -o ./bin/kernel.bin ./bin/kernel.o -e 0x0
Что мне делать?