亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? kernel.asm

?? 自己動手寫操作 系統 的源 代 碼 這里有完整的源代碼
?? ASM
字號:

; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;                               kernel.asm
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;                                                     Forrest Yu, 2005
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


%include "sconst.inc"

; 導入函數
extern	cstart
extern	tinix_main
extern	exception_handler
extern	spurious_irq

; 導入全局變量
extern	gdt_ptr
extern	idt_ptr
extern	p_proc_ready
extern	tss
extern	disp_pos

bits 32

[SECTION .bss]
StackSpace		resb	2 * 1024
StackTop:		; 棧頂

[section .text]	; 代碼在此

global _start	; 導出 _start

global restart

global	divide_error
global	single_step_exception
global	nmi
global	breakpoint_exception
global	overflow
global	bounds_check
global	inval_opcode
global	copr_not_available
global	double_fault
global	copr_seg_overrun
global	inval_tss
global	segment_not_present
global	stack_exception
global	general_protection
global	page_fault
global	copr_error
global	hwint00
global	hwint01
global	hwint02
global	hwint03
global	hwint04
global	hwint05
global	hwint06
global	hwint07
global	hwint08
global	hwint09
global	hwint10
global	hwint11
global	hwint12
global	hwint13
global	hwint14
global	hwint15


_start:
	; 此時內存看上去是這樣的(更詳細的內存情況在 LOADER.ASM 中有說明):
	;              ┃                                    ┃
	;              ┃                 ...                ┃
	;              ┣━━━━━━━━━━━━━━━━━━┫
	;              ┃■■■■■■Page  Tables■■■■■■┃
	;              ┃■■■■■(大小由LOADER決定)■■■■┃ PageTblBase
	;    00101000h ┣━━━━━━━━━━━━━━━━━━┫
	;              ┃■■■■Page Directory Table■■■■┃ PageDirBase = 1M
	;    00100000h ┣━━━━━━━━━━━━━━━━━━┫
	;              ┃□□□□ Hardware  Reserved □□□□┃ B8000h ← gs
	;       9FC00h ┣━━━━━━━━━━━━━━━━━━┫
	;              ┃■■■■■■■LOADER.BIN■■■■■■┃ somewhere in LOADER ← esp
	;       90000h ┣━━━━━━━━━━━━━━━━━━┫
	;              ┃■■■■■■■KERNEL.BIN■■■■■■┃
	;       80000h ┣━━━━━━━━━━━━━━━━━━┫
	;              ┃■■■■■■■■KERNEL■■■■■■■┃ 30400h ← KERNEL 入口 (KernelEntryPointPhyAddr)
	;       30000h ┣━━━━━━━━━━━━━━━━━━┫
	;              ┋                 ...                ┋
	;              ┋                                    ┋
	;           0h ┗━━━━━━━━━━━━━━━━━━┛ ← cs, ds, es, fs, ss
	;
	;
	; GDT 以及相應的描述符是這樣的:
	;
	;		              Descriptors               Selectors
	;              ┏━━━━━━━━━━━━━━━━━━┓
	;              ┃         Dummy Descriptor           ┃
	;              ┣━━━━━━━━━━━━━━━━━━┫
	;              ┃         DESC_FLAT_C    (0~4G)     ┃   8h = cs
	;              ┣━━━━━━━━━━━━━━━━━━┫
	;              ┃         DESC_FLAT_RW   (0~4G)     ┃  10h = ds, es, fs, ss
	;              ┣━━━━━━━━━━━━━━━━━━┫
	;              ┃         DESC_VIDEO                 ┃  1Bh = gs
	;              ┗━━━━━━━━━━━━━━━━━━┛
	;
	; 注意! 在使用 C 代碼的時候一定要保證 ds, es, ss 這幾個段寄存器的值是一樣的
	; 因為編譯器有可能編譯出使用它們的代碼, 而編譯器默認它們是一樣的. 比如串拷貝操作會用到 ds 和 es.
	;
	;


	; 把 esp 從 LOADER 挪到 KERNEL
	mov	esp, StackTop	; 堆棧在 bss 段中

	mov	dword [disp_pos], 0

	sgdt	[gdt_ptr]	; cstart() 中將會用到 gdt_ptr
	call	cstart		; 在此函數中改變了gdt_ptr,讓它指向新的GDT
	lgdt	[gdt_ptr]	; 使用新的GDT

	lidt	[idt_ptr]

	jmp	SELECTOR_KERNEL_CS:csinit
csinit:		; “這個跳轉指令強制使用剛剛初始化的結構”——<<OS:D&I 2nd>> P90.

	;jmp 0x40:0
	;ud2

	;sti

	xor	eax, eax
	mov	ax, SELECTOR_TSS
	ltr	ax

	jmp	tinix_main

	;hlt


; 中斷和異常 -- 硬件中斷
; ---------------------------------
%macro	hwint_master	1
	push	%1
	call	spurious_irq
	add	esp, 4
	hlt
%endmacro


ALIGN	16
hwint00:		; Interrupt routine for irq 0 (the clock).
	iretd

ALIGN	16
hwint01:		; Interrupt routine for irq 1 (keyboard)
	hwint_master	1

ALIGN	16
hwint02:		; Interrupt routine for irq 2 (cascade!)
	hwint_master	2

ALIGN	16
hwint03:		; Interrupt routine for irq 3 (second serial)
	hwint_master	3

ALIGN	16
hwint04:		; Interrupt routine for irq 4 (first serial)
	hwint_master	4

ALIGN	16
hwint05:		; Interrupt routine for irq 5 (XT winchester)
	hwint_master	5

ALIGN	16
hwint06:		; Interrupt routine for irq 6 (floppy)
	hwint_master	6

ALIGN	16
hwint07:		; Interrupt routine for irq 7 (printer)
	hwint_master	7

; ---------------------------------
%macro	hwint_slave	1
	push	%1
	call	spurious_irq
	add	esp, 4
	hlt
%endmacro
; ---------------------------------

ALIGN	16
hwint08:		; Interrupt routine for irq 8 (realtime clock).
	hwint_slave	8

ALIGN	16
hwint09:		; Interrupt routine for irq 9 (irq 2 redirected)
	hwint_slave	9

ALIGN	16
hwint10:		; Interrupt routine for irq 10
	hwint_slave	10

ALIGN	16
hwint11:		; Interrupt routine for irq 11
	hwint_slave	11

ALIGN	16
hwint12:		; Interrupt routine for irq 12
	hwint_slave	12

ALIGN	16
hwint13:		; Interrupt routine for irq 13 (FPU exception)
	hwint_slave	13

ALIGN	16
hwint14:		; Interrupt routine for irq 14 (AT winchester)
	hwint_slave	14

ALIGN	16
hwint15:		; Interrupt routine for irq 15
	hwint_slave	15



; 中斷和異常 -- 異常
divide_error:
	push	0xFFFFFFFF	; no err code
	push	0		; vector_no	= 0
	jmp	exception
single_step_exception:
	push	0xFFFFFFFF	; no err code
	push	1		; vector_no	= 1
	jmp	exception
nmi:
	push	0xFFFFFFFF	; no err code
	push	2		; vector_no	= 2
	jmp	exception
breakpoint_exception:
	push	0xFFFFFFFF	; no err code
	push	3		; vector_no	= 3
	jmp	exception
overflow:
	push	0xFFFFFFFF	; no err code
	push	4		; vector_no	= 4
	jmp	exception
bounds_check:
	push	0xFFFFFFFF	; no err code
	push	5		; vector_no	= 5
	jmp	exception
inval_opcode:
	push	0xFFFFFFFF	; no err code
	push	6		; vector_no	= 6
	jmp	exception
copr_not_available:
	push	0xFFFFFFFF	; no err code
	push	7		; vector_no	= 7
	jmp	exception
double_fault:
	push	8		; vector_no	= 8
	jmp	exception
copr_seg_overrun:
	push	0xFFFFFFFF	; no err code
	push	9		; vector_no	= 9
	jmp	exception
inval_tss:
	push	10		; vector_no	= A
	jmp	exception
segment_not_present:
	push	11		; vector_no	= B
	jmp	exception
stack_exception:
	push	12		; vector_no	= C
	jmp	exception
general_protection:
	push	13		; vector_no	= D
	jmp	exception
page_fault:
	push	14		; vector_no	= E
	jmp	exception
copr_error:
	push	0xFFFFFFFF	; no err code
	push	16		; vector_no	= 10h
	jmp	exception

exception:
	call	exception_handler
	add	esp, 4*2	; 讓棧頂指向 EIP,堆棧中從頂向下依次是:EIP、CS、EFLAGS
	hlt


; ====================================================================================
;                                   restart
; ====================================================================================
restart:
	mov	esp, [p_proc_ready]
	lldt	[esp + P_LDT_SEL] 
	lea	eax, [esp + P_STACKTOP]
	mov	dword [tss + TSS3_S_SP0], eax
	pop	gs
	pop	fs
	pop	es
	pop	ds
	popad
	add	esp, 4
	iretd


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产秦先生| 国产精品国产自产拍在线| 亚洲一区二区视频| 在线精品视频免费观看| 亚洲一区在线视频| 欧美中文字幕亚洲一区二区va在线| 亚洲最新在线观看| 欧美高清视频www夜色资源网| 视频在线观看一区二区三区| 717成人午夜免费福利电影| 男男视频亚洲欧美| 久久久一区二区| 91麻豆国产香蕉久久精品| 亚洲天堂精品视频| 欧美精选一区二区| 国产成人综合精品三级| 成人欧美一区二区三区| 欧美日韩高清一区| 国产一区久久久| 亚洲欧洲日产国码二区| 欧美视频一区二| 国内精品免费在线观看| 国产精品黄色在线观看| 在线播放日韩导航| 丁香桃色午夜亚洲一区二区三区| 一区二区三区中文在线| 欧美一区2区视频在线观看| 国产精品99久久久久久有的能看| 亚洲精品国产精华液| 日韩精品最新网址| 91美女视频网站| 久久成人免费电影| 亚洲女人****多毛耸耸8| 欧美成人精品二区三区99精品| 成人av网址在线观看| 天天综合网 天天综合色| 国产女主播视频一区二区| 欧美影院精品一区| 国产999精品久久久久久绿帽| 亚洲一区在线播放| 欧美韩国日本综合| 日韩精品中文字幕在线不卡尤物 | 国产精品视频在线看| 欧美日韩一区二区电影| 成人午夜私人影院| 蜜桃精品视频在线观看| 一区二区欧美精品| 日本一区二区三区免费乱视频 | 在线成人av影院| 国产成人综合在线| 国产最新精品精品你懂的| 亚洲国产乱码最新视频| 亚洲欧洲99久久| 久久久91精品国产一区二区精品| 91麻豆精品国产91久久久使用方法| 99在线热播精品免费| 国产一区免费电影| 激情综合网av| 蜜桃视频在线一区| 日本最新不卡在线| 亚洲一区二区三区视频在线播放| 国产精品毛片大码女人| 亚洲国产高清aⅴ视频| 久久久久久久久久久久久女国产乱| 国产乱子轮精品视频| 《视频一区视频二区| 日韩精品乱码av一区二区| 9i在线看片成人免费| 国产美女视频一区| 国产乱码精品一区二区三区av| 日韩激情中文字幕| 水野朝阳av一区二区三区| 无吗不卡中文字幕| 又紧又大又爽精品一区二区| 亚洲欧美日韩在线| 亚洲人妖av一区二区| 中文字幕中文字幕一区二区| 国产蜜臀97一区二区三区| 国产婷婷色一区二区三区在线| 久久毛片高清国产| 久久免费的精品国产v∧| 国产午夜亚洲精品理论片色戒| 久久日一线二线三线suv| 国产亚洲综合性久久久影院| 久久九九国产精品| 国产欧美一区二区三区鸳鸯浴 | 欧美精品1区2区| 欧美一区二区美女| 日韩视频国产视频| 精品国产自在久精品国产| 久久久久久99久久久精品网站| 久久久久久久久久美女| 国产精品美女久久久久久久| 亚洲精品免费在线| 亚洲国产cao| 久久精品国产999大香线蕉| 激情欧美一区二区| 成人白浆超碰人人人人| 欧日韩精品视频| 91精品国产色综合久久久蜜香臀| 久久亚洲免费视频| 国产精品传媒入口麻豆| 亚洲成人免费看| 看电影不卡的网站| 国产91精品一区二区麻豆网站| 91啪亚洲精品| 91精品国产综合久久精品麻豆| 久久综合色婷婷| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 3d成人h动漫网站入口| 久久亚洲二区三区| 亚洲精选一二三| 美女在线视频一区| a4yy欧美一区二区三区| 欧美一区二区三区在| 亚洲国产精品激情在线观看| 亚洲一区精品在线| 黄色精品一二区| 91福利社在线观看| 久久欧美一区二区| 无吗不卡中文字幕| 成人av在线资源网站| 制服丝袜在线91| 国产精品超碰97尤物18| 久久99国产精品尤物| 91小视频免费看| 欧美精品一区二区久久婷婷| 亚洲精品成a人| 国产精品自拍在线| 7777精品久久久大香线蕉| 中文字幕一区二区三区在线观看 | 日本一区二区视频在线观看| 亚洲va欧美va人人爽午夜| 国产成人精品免费在线| 在线不卡免费欧美| 亚洲免费资源在线播放| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 怡红院av一区二区三区| 国产精品资源在线| 欧美一级精品大片| 亚洲精品久久7777| 国产99精品在线观看| 精品剧情v国产在线观看在线| 亚洲综合一区二区| av一区二区久久| 国产午夜久久久久| 国产真实乱对白精彩久久| 777久久久精品| 亚洲福利一区二区| 在线观看免费成人| 亚洲天堂中文字幕| 99国产精品久久久久| 国产欧美日韩麻豆91| 国产在线国偷精品免费看| 91精品国产91久久久久久一区二区| 洋洋成人永久网站入口| 91成人免费在线| 亚洲男人天堂一区| 91在线高清观看| 亚洲欧美在线aaa| 99久久99久久综合| 国产精品久久久久久久久果冻传媒| 国产一区 二区 三区一级| 欧美精品一区二区三区一线天视频| 看电影不卡的网站| 久久蜜桃av一区二区天堂| 国产精品一区一区三区| 国产午夜久久久久| av高清不卡在线| 亚洲视频一二区| 欧美制服丝袜第一页| 亚洲第一精品在线| 欧美顶级少妇做爰| 美女mm1313爽爽久久久蜜臀| 精品美女在线观看| 国产一区啦啦啦在线观看| 中文字幕第一区综合| 暴力调教一区二区三区| 亚洲人一二三区| 欧美美女网站色| 久久精品国产成人一区二区三区| www精品美女久久久tv| 丁香六月久久综合狠狠色| 亚洲精品伦理在线| 56国语精品自产拍在线观看| 经典一区二区三区| 国产精品网站一区| 欧美主播一区二区三区| 美女被吸乳得到大胸91| 日本一区二区三区高清不卡 | 久久99国产精品久久99 | 中文字幕的久久| 99国产精品99久久久久久| 樱花草国产18久久久久| 欧美二区乱c少妇| 风间由美一区二区三区在线观看 | 亚洲色图制服诱惑| 91精品久久久久久久91蜜桃| 国产精品影视天天线| 亚洲精品高清在线|