⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 head.s

📁 阿基米德操作系统的源代码
💻 S
字号:

.text.globl idt,gdt,pg_dir,startup_32,floppy_buffer,exec_buffer,kernel_stack,old_REGS
pg_dir:startup_32:	movl $0x10,%eax	mov  %ax,%ds	mov  %ax,%es	mov  %ax,%fs	mov  %ax,%gs	
	lss	 stack_start,%esp	call setup_idt	call setup_gdt	movl $0x10,%eax			mov  %ax,%ds			mov  %ax,%es			mov  %ax,%fs	mov  %ax,%gs	lss  stack_start,%esp	
	xorl %eax,%eax1:	incl %eax			movl %eax,0x000000	cmpl %eax,0x100000	je 1b	movl %cr0,%eax			andl $0x80000011,%eax		testl $0x10,%eax	jne  1f				orl  $4,%eax		1:	movl %eax,%cr0	jmp  after_page_tables
setup_idt:	lea  ignore_int,%edx	movl $0x00080000,%eax	movw %dx,%ax			movw $0x8E00,%dx		lea  idt,%edi	movl $256,%ecxrp_sidt:	movl %eax,(%edi)	movl %edx,4(%edi)	addl $8,%edi	decl %ecx	jne  rp_sidt	lidt idt_descr		retsetup_gdt:	lgdt gdt_descr	ret
.org 0x1000idt:	
	.fill 256,8,0		

gdt:	
	.quad 0x0000000000000000	
	.quad 0x00c09a00000087ff	
	.quad 0x00c09200000087ff
	.quad 0x00c0fa00000007ff	
	.quad 0x00c0f200000007ff
	.quad 0x00c0fa8000007fff
	.quad 0x00c0f28000007fff
	.quad 0x0000000000000000
	.quad 0x0000890074000067
	.quad 0x0000000000000000		
	.fill 246,8,0			

floppy_buffer:
	.fill 1024,1,0

exec_buffer:
	.fill 4096,1,0

kernel_stack:
	.fill 2048,4,0
kernel_stack_0:

user_stack:
	.fill 2048,4,0
user_stack_0:

tss_tab:
	.long 0x00
	.long kernel_stack_0
	.long 0x10
	.long 0x00
	.long 0x00
	.long 0x00
	.long 0x00
	.long pg_dir
	.fill 17,4,0
	.long 0x80000000

old_REGS:
	.fill 16,4,0

.align 4
stack_start:
	.long user_stack_0
	.word 0x10

.align 4
.word 0
idt_descr:
	.word 256*8-1		
	.long idt

.align 4
.word 0
gdt_descr:
	.word 256*8-1		
	.long gdt		

.align 4
ignore_int:
	incb 0xb8000+160		
	movb $2,0xb8000+161		
	iret				

.align 4
setup_paging:
	movl $pg_dir,%edi
	movl $0x100007,%eax
	movl $256,%ecx
	cld
1:
	stosl
	addl $0x1000,%eax
	loop 1b

	xorl %eax,%eax
	movl $768,%ecx
	cld
	rep
	stosl

	movl $0x100000,%edi
	movl $0x000007,%eax
	movl $0x40000,%ecx
	cld
1:
	stosl
	addl $0x1000,%eax
	loop 1b

	cld
	xorl %eax,%eax		
	movl %eax,%cr3		
	movl %cr0,%eax
	orl $0x80000000,%eax
	movl %eax,%cr0		
	ret			
.align 4after_page_tables:
	call  setup_paging
	call  main
LL:
	jmp LL			

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -