Tag: qemu

以下宏做什么?

在qemu源代码中,我有以下宏名为offsetof 。 任何人都能告诉我它的作用吗? #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *) 0)->MEMBER) 它以这种方式使用: offsetof(CPUState, icount_decr.u32) 其中CPUState是一个结构。 我认为它给出了结构中成员的偏移量,但我不确定。 编辑:是的,我发现了发生了什么。 CPUState的定义里面有一个宏,我错过了,其中包括变量icount_decr。

向QEMU添加新的“命令”

我是新的,但我想向QEMU添加命令让我说我想添加一个“ fizzbuzz ”命令,如果我键入fizzbuzz和数字我会得到一个输出。 我用C编写了简单的程序(并确保它正常工作),并在ubuntu 16.04.1 LTS上ubuntu 16.04.1 LTS QEMU QEMU如何识别我写的function? 这是“fizzbuzz”代码 #include #include #define FIFTHEEN 15 #define FIVE 5 #define THREE 3 void fizzbuzz(int n); int main(void) { int n; while (1) { scanf_s(“%d”, &n); fizzbuzz(n); } return 0; } void fizzbuzz(int n) { if (n % FIFTHEEN == 0) puts(“fizzbuzz\n”); else if (n % […]

为什么将char传递给函数会改变它在c中的值?

我目前正在关注构建操作系统的这本工作簿 。 我的目的是编写一个64位内核。 在文本模式下,我已经加载了“内核”代码并将单个字符写入帧缓冲区。 当我通过将代码包装在函数中来添加一个间接级别来将单个字符写入帧缓冲区时,我的问题出现了。 看来传递给函数的char值在某种程度上被破坏了。 我有三个文件: bootloader.asm ; bootloader.asm [org 0x7c00] KERNEL_OFFSET equ 0x1000 mov bp, 0x9000 mov sp, bp ; load the kernel from boot disk mov bx, KERNEL_OFFSET mov dl, dl ; boot drive is set to dl mov ah, 0x02 ; bios read sector mov al, 15 ; read 15 sectors […]