4日目
ここらへんから開発は主にCでおこなうようになっていくのでここで説明することは減っていきます。
4日目についてはbootpack.cなどはOS自作本とまったく同じでOK
異なるのはnaskfunc.nasに対応するasmfunc.Sを作ったくらいです。
// // asmfunc.S // .file "asmfunc.S" .code32 .globl io_hlt io_hlt: hlt ret .globl io_cli io_cli: cli ret .globl io_sti io_sti: sti ret .globl write_mem8 write_mem8: // void write_mem8(int addr, int data) movl 4(%esp), %ecx // addrを%ecxに代入 movb 8(%esp), %al // dataを%alに代入 movb %al, (%ecx) ret .globl io_out8 io_out8: movl 4(%esp), %edx // port movb 8(%esp), %al // data outb %al, %dx ret .globl io_in8 io_in8: movl 4(%esp), %edx // port movl $0, %eax inb %dx, %al ret .globl io_load_eflags io_load_eflags: // int io_load_eflags(void) pushf // push %eflags popl %eax ret .globl io_store_eflags io_store_eflags: // void io_store_eflags(int eflags) movl 4(%esp), %eax push %eax popf // pop %eflags ret
MakefileはOBJを書換えるだけでOK
OBJS = crt.o bootpack.o asmfunc.o