我正在开发自己的操作系统。我已经完成了引导扇区并成功加载了我的内核。我的开发环境是 Ubuntu 14.04 和 GCC 4.8。我的内核将在 BOCHS 下运行。我想在屏幕上的特定位置打印特定字符,所以我创建了一个这样的函数:
void print_char(char target, int col, int row, unsigned char attribute) {
//attribute controls the colour of the character
char * vidmem = (char *) VIDEO_ADDRESS; //#define VIDEO_ADDRESS 0xb8000
*vidmem = target;
//TODO: add other control statements
}
我在我的函数中调用这个函数main
,这是我内核的入口点:
print_char('T', 0, 0, (unsigned char) 0x0f);
上面的代码应该在屏幕左上角打印字符“T”。它没有出现!在我更改了声明之后print_char
:
void print_char(char target, int col, int row, int attribute)
或者是这样的:
void print_char(char target, int col, int row)
然后像这样称呼它print_char('T', 0, 0)
我改了之后,一切正常!我真的很困惑这个问题。谁能给我解释一下?