本教程介绍如何编写自己的简单操作系统:
编写您自己的操作系统教程:http://joelgompert.com/OS/TableOfContents.htm
每件事都没问题,但开发语言就是汇编。我想用C编程语言开发我的简单操作系统。
我想要一个C编译器将我的C源代码转换为汇编源代码,然后用NASM
编译可编辑的文件。
编译器应该创建由NASM
编译的汇编文件。
gcc -S OS.c masm=intel
编译时,使用GCC(NASM
)转换为汇编源文件的C源文件失败。
我甚至不使用任何C标准库stdio.h
或math.h
。
我想要一个
NASM
或FASM
输出)的编译器。我应该使用哪个C编译器来创建自己的简单操作系统?
答案 0 :(得分:1)
根据定义,编译器会将您的高级代码编译为机器语言,即汇编程序。如果您希望能够查看汇编程序,那么可以使用GCC开关来生成汇编程序。在使用GCC编译C代码时,只需使用-S
开关。
答案 1 :(得分:1)
我对此没有任何实际经验,但您可能需要查看:
答案 2 :(得分: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