0

本教程展示了如何编写我自己的简单操作系统:

编写自己的操作系统教程:http: //joelgompert.com/OS/TableOfContents.htm


一切都很好,但开发语言是汇编。我想用 C 编程语言开发我的简单操作系统。

我想要一个 C 编译器,它将我的 C 源代码转换为汇编源代码,然后我用NASM.

编译器应该可以创建由NASM.

使用 GCC() 转换为汇编源文件的 C 源文件gcc -S OS.c masm=intel在我使用NASM.

我什至不使用任何 C 标准库stdio.hmath.h. 我想要一个编译器

  • 将 C 源代码转换为汇编源代码。
  • 或者从 C 源代码创建平面二进制文件(如NASMFASM输出)的编译器。

我应该使用哪个 C 编译器来创建自己的简单操作系统?

4

3 回答 3

1

根据定义,编译器会将您的高级代码编译为机器语言,即汇编程序。如果您希望能够查看汇编程序,可以使用 GCC 开关来生成汇编程序。只需在使用-SGCC 编译 C 代码时使用该开关。

于 2012-05-09T20:48:20.460 回答
1

我对此没有任何实际经验,但您可能想看看:

于 2012-05-09T20:58:43.513 回答
0

如果您想用 c 编写自己的操作系统,请在 YouTube 上查找 Pritam Zope。他很聪明,有很多关于用 c 和 asm 编写自己的内核和引导加载程序的视频。我也有兴趣编写自己的操作系统,我做了一些研究并决定最好在 asm 中工作。如果您对使用 asm 而不是 c 感兴趣,还可以查看 theMike97。这是我在 asm 中编写的一个简单的引导加载程序,包含您感兴趣的内容。它只是打印你好世界。

org 0x7c00
mov si, message       ;The message location *you can change this*
call print            ;CALL tells the pc to jump back here when done
jmp $
print:
  mov ah, 0Eh         ;Set function

.run:
  lodsb               ;Get the char
; cmp al, 0x00        ;I would use this but ya know u dont so use:
  cmp al, 0           ;0 has a HEX code of 0x48 so its not 0x00
  je .done            ;Jump to done if ending code is found
  int 10h             ;Else print
  jmp .run            ; and jump back to .run

.done:
  ret                 ;Return

message           db  'Hello, world', 0 ;IF you use 0x00
;message          db  'Hello, world', 0x00


times 510-($-$$) db 0
dw 0xaa55
~

将此代码保存在名为 main.asm 的文件中 编译它并nasm -fbin main.asm -o main.bin 运行它qemu-system-x86_64 main.bin

于 2019-07-01T18:39:44.177 回答