我试图在没有任何操作系统(baremetal)的Qemu i386仿真器系统上编写简单的hello world程序。目前,我可以通过写入连续循环中的地址来写入视频。
u16 *const video = (u16*) 0xB8000;
/* Display a character at x, y in fg foreground color and bg background color.*/
void putc(u8 x, u8 y, enum color fg, enum color bg, char c)
{
u16 z = (bg << 12) | (fg << 8) | c;
video[y * COLS + x] = z;
}
/* Display a string starting at x, y in fg foreground color and bg background
* color. Characters in the string are not interpreted (e.g \n, \b, \t,etc.).
*/
void puts(u8 x, u8 y, enum color fg, enum color bg, const char *s)
{
for (; *s; s++, x++)
putc(x, y, fg, bg, *s);
}
我想在没有任何格式的情况下类似地写入控制台或终端(使用uart)。我可以找到基于Arm的系统的这些信息,但是很难找到如何为i386系统做这些。建议?