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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? kernel.asm

?? 一個(gè)很簡(jiǎn)單的操作系統(tǒng)(版本二),是保護(hù)模式的編寫,讓你了解保護(hù)模式
?? ASM
字號(hào):

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


%include "sconst.inc"

; 導(dǎo)入函數(shù)
extern	cstart
extern	tinix_main
extern	exception_handler
extern	spurious_irq
extern	clock_handler
extern	disp_str
extern	delay

; 導(dǎo)入全局變量
extern	gdt_ptr
extern	idt_ptr
extern	p_proc_ready
extern	tss
extern	disp_pos
extern	k_reenter
extern	irq_table

bits 32

[SECTION .data]
clock_int_msg		db	"^", 0

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

[section .text]	; 代碼在此

global _start	; 導(dǎo)出 _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:
	; 此時(shí)內(nèi)存看上去是這樣的(更詳細(xì)的內(nèi)存情況在 LOADER.ASM 中有說(shuō)明):
	;              ┃                                    ┃
	;              ┃                 ...                ┃
	;              ┣━━━━━━━━━━━━━━━━━━┫
	;              ┃■■■■■■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 以及相應(yīng)的描述符是這樣的:
	;
	;		              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 代碼的時(shí)候一定要保證 ds, es, ss 這幾個(gè)段寄存器的值是一樣的
	; 因?yàn)榫幾g器有可能編譯出使用它們的代碼, 而編譯器默認(rèn)它們是一樣的. 比如串拷貝操作會(huì)用到 ds 和 es.
	;
	;


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

	mov	dword [disp_pos], 0

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

	lidt	[idt_ptr]

	jmp	SELECTOR_KERNEL_CS:csinit
csinit:		; “這個(gè)跳轉(zhuǎn)指令強(qiáng)制使用剛剛初始化的結(jié)構(gòu)”——<<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
	call	save
	in	al, INT_M_CTLMASK	; ┓
	or	al, (1 << %1)		; ┣ 屏蔽當(dāng)前中斷
	out	INT_M_CTLMASK, al	; ┛
	mov	al, EOI			; ┓置EOI位
	out	INT_M_CTL, al		; ┛
	sti	; CPU在響應(yīng)中斷的過(guò)程中會(huì)自動(dòng)關(guān)中斷,這句之后就允許響應(yīng)新的中斷
	push	%1			; ┓
	call	[irq_table + 4 * %1]	; ┣ 中斷處理程序
	pop	ecx			; ┛
	cli
	in	al, INT_M_CTLMASK	; ┓
	and	al, ~(1 << %1)			; ┣ 恢復(fù)接受當(dāng)前中斷
	out	INT_M_CTLMASK, al	; ┛
	ret
%endmacro



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

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

; ====================================================================================
;                                   save
; ====================================================================================
save:
	pushad		; ┓
	push	ds	; ┃
	push	es	; ┣ 保存原寄存器值
	push	fs	; ┃
	push	gs	; ┛
	mov	dx, ss
	mov	ds, dx
	mov	es, dx

	mov	eax, esp			; eax = 進(jìn)程表起始地址

	inc	dword [k_reenter]		; k_reenter++;
	cmp	dword [k_reenter], 0		; if(k_reenter ==0)
	jne	.1				; {
	mov	esp, StackTop			;	mov esp, StackTop <-- 切換到內(nèi)核棧
	push	restart				;	push restart
	jmp	[eax + RETADR - P_STACKBASE]	;	return;
.1:						; } else { 已經(jīng)在內(nèi)核棧,不需要再切換
	push	restart_reenter			;	push restart_reenter
	jmp	[eax + RETADR - P_STACKBASE]	;	return;
						; }


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


?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
大陆成人av片| 国产成人精品一区二| 天天综合网 天天综合色| 亚洲日本va在线观看| 国产午夜精品久久久久久久| 久久综合国产精品| 日韩午夜激情电影| 国产清纯在线一区二区www| 久久久久亚洲蜜桃| 日韩毛片高清在线播放| 国产精品成人一区二区艾草| 国产精品久久久久久久久晋中| 久久噜噜亚洲综合| 自拍偷拍欧美精品| 亚洲激情男女视频| 国产一区二区看久久| 粉嫩嫩av羞羞动漫久久久| 99精品久久只有精品| 欧美日韩免费高清一区色橹橹| 一本大道久久a久久综合婷婷 | 国产一区二区三区蝌蚪| www.色综合.com| 欧美精品日韩一本| 国产亚洲短视频| 男人操女人的视频在线观看欧美| 蜜桃久久久久久| 国产盗摄一区二区| 5858s免费视频成人| 国产欧美一区二区精品性| 日韩在线一二三区| 轻轻草成人在线| 欧美在线视频不卡| 久久久久久97三级| 精品午夜久久福利影院| 国产成人av福利| 精品理论电影在线| 日本伊人色综合网| 欧美精品乱码久久久久久 | 国产一区 二区| 日韩写真欧美这视频| 日本亚洲三级在线| 日韩一二三区不卡| 麻豆国产精品官网| 久久免费国产精品| 国产成人免费网站| 成人欧美一区二区三区黑人麻豆| 国产成人啪免费观看软件| 久久精品夜色噜噜亚洲a∨| 不卡的av电影| 久久久久久久久伊人| 午夜亚洲国产au精品一区二区| 成人手机在线视频| ...中文天堂在线一区| 日本高清成人免费播放| 亚洲制服丝袜一区| 在线中文字幕一区| 亚洲第一二三四区| 日韩精品一区国产麻豆| 国产一区二区免费看| 中文字幕一区二区三区精华液| 欧美午夜精品久久久久久超碰| 日本不卡中文字幕| 亚洲免费观看在线观看| 亚洲精品一区二区三区香蕉| 成年人午夜久久久| 石原莉奈在线亚洲二区| 国产日韩av一区| www成人在线观看| 欧美性猛交xxxx乱大交退制版 | 成年人网站91| 国产综合久久久久影院| 热久久免费视频| 亚洲在线视频一区| 欧美www视频| 在线综合亚洲欧美在线视频| 91在线视频18| 成人性生交大片免费看中文| 免费观看久久久4p| 免费国产亚洲视频| 亚洲一区二区精品久久av| 国产精品高潮呻吟| 久久久久久久久99精品| 欧美在线播放高清精品| 99精品欧美一区| 不卡视频在线观看| 成人免费毛片a| 色婷婷久久99综合精品jk白丝 | 欧美日韩精品一二三区| 在线视频综合导航| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 久久久久国产免费免费| 国产亚洲美州欧州综合国| 国产日韩欧美不卡| 国产日韩综合av| 亚洲欧美一区二区三区国产精品 | 欧美一级视频精品观看| 欧美午夜寂寞影院| 在线视频国内自拍亚洲视频| 欧美影视一区在线| 精品国产91久久久久久久妲己 | 国产精品美女久久久久久久| 亚洲最快最全在线视频| 亚洲一区二区三区在线播放| 午夜久久久久久| 国产成人av一区二区| 欧美三级资源在线| 欧美一区三区四区| 久久综合色播五月| 一区二区三区在线播放| 亚洲国产精品欧美一二99| 美女一区二区视频| 日本福利一区二区| 精品国产一区二区在线观看| 亚洲你懂的在线视频| 日本欧美在线看| 精彩视频一区二区| 欧美体内she精高潮| 国产欧美日韩三级| 热久久国产精品| 欧美视频一区二区三区四区| 久久影院视频免费| 精品一区二区国语对白| 色老头久久综合| 中文字幕一区av| 成人性视频免费网站| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲一区二区三区影院| 97aⅴ精品视频一二三区| 国产欧美日本一区视频| 狠狠色丁香九九婷婷综合五月| 7777精品伊人久久久大香线蕉超级流畅 | 狠狠色丁香久久婷婷综合_中 | 日韩一区日韩二区| 高清成人免费视频| 中文字幕乱码一区二区免费| 高清在线成人网| 亚洲靠逼com| 欧美电影免费观看高清完整版在线| 丝袜诱惑制服诱惑色一区在线观看 | 国产精品嫩草99a| 91蝌蚪porny成人天涯| 亚洲女爱视频在线| 91精品国产欧美一区二区成人 | 91丝袜美女网| 亚洲一区二区成人在线观看| 欧美一区二区三区婷婷月色| 久久国产免费看| 亚洲四区在线观看| 精品视频在线视频| 久久国产精品99久久久久久老狼 | 国产精品久久久久久久久久久免费看 | 欧美在线综合视频| 日韩高清一级片| 亚洲日本免费电影| 久久久久久久久99精品| 欧美日韩视频第一区| 91美女视频网站| 久久99国产精品久久99| 国产精品黄色在线观看| 欧美日韩国产精选| 成人手机电影网| 蜜桃久久久久久久| 亚洲国产精品久久久男人的天堂| 久久综合色之久久综合| 制服视频三区第一页精品| 97se狠狠狠综合亚洲狠狠| 成人少妇影院yyyy| 国产主播一区二区三区| 精品一区二区三区在线播放视频 | 麻豆国产91在线播放| 亚洲一区二区综合| 亚洲色图丝袜美腿| 亚洲视频一区在线观看| 久久久久成人黄色影片| 日韩午夜电影在线观看| 欧美一区国产二区| 欧美日韩亚洲综合一区| 欧美性生活久久| 91精品久久久久久久99蜜桃| 精品噜噜噜噜久久久久久久久试看| 欧美日韩大陆在线| 亚洲精品在线三区| 国产精品乱码一区二三区小蝌蚪| 精品免费一区二区三区| www激情久久| 17c精品麻豆一区二区免费| 亚洲欧美日韩国产另类专区| 亚洲日本护士毛茸茸| 日本不卡一区二区三区高清视频| 久久99国产精品尤物| 成人禁用看黄a在线| 91性感美女视频| 88在线观看91蜜桃国自产| 欧美α欧美αv大片| 亚洲视频一区在线观看| 强制捆绑调教一区二区| 国产精品一区免费在线观看| 欧美性猛交xxxx黑人交| 精品久久久久久最新网址| 亚洲欧美日韩国产一区二区三区|