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

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

?? kernel.asm

?? 《自己動手寫操作系統(tǒng)》的隨書附贈光盤
?? ASM
字號:

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


%include "sconst.inc"

; 導入函數(shù)
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:
	; 此時內(nèi)存看上去是這樣的(更詳細的內(nèi)存情況在 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		; 在此函數(shù)中改變了gdt_ptr,讓它指向新的GDT
	lgdt	[gdt_ptr]	; 使用新的GDT

	lidt	[idt_ptr]

	jmp	SELECTOR_KERNEL_CS:csinit
csinit:		; “這個跳轉(zhuǎn)指令強制使用剛剛初始化的結(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
	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一区二区三区免费野_久草精品视频
久久免费精品国产久精品久久久久| 日韩一区二区三区电影在线观看| 午夜精品久久久久影视| 国产成人午夜高潮毛片| 韩国视频一区二区| 综合分类小说区另类春色亚洲小说欧美| 欧美无人高清视频在线观看| 国产一区二区三区免费在线观看| 亚洲欧美一区二区三区孕妇| 久久久亚洲精品一区二区三区| 欧美亚洲国产bt| av一区二区三区| 精品一区二区三区免费视频| 亚洲一区二区三区四区的| 中文字幕免费一区| 精品国产1区二区| 7777精品久久久大香线蕉| 99re免费视频精品全部| 风流少妇一区二区| 国产一区二区三区观看| 免费欧美高清视频| 亚洲一二三四在线| 亚洲美女视频在线观看| 国产精品久久午夜夜伦鲁鲁| 久久在线免费观看| 日韩精品专区在线影院重磅| 欧美日韩一级视频| 欧美在线999| 色偷偷成人一区二区三区91| 成人av网址在线| 高清国产午夜精品久久久久久| 精品综合久久久久久8888| 免费在线视频一区| 免费成人美女在线观看| 同产精品九九九| 天堂精品中文字幕在线| 亚洲成人动漫av| 舔着乳尖日韩一区| 日本一不卡视频| 日本sm残虐另类| 奇米在线7777在线精品| 麻豆一区二区99久久久久| 麻豆专区一区二区三区四区五区| 美女爽到高潮91| 久久国产免费看| 国产激情视频一区二区三区欧美| 国产精品一级片| 成人av动漫在线| 91在线视频18| 日本韩国欧美一区二区三区| 91九色02白丝porn| 欧美日韩精品一区二区天天拍小说| 精品视频123区在线观看| 欧美区视频在线观看| 91精品免费在线观看| 欧美一区日韩一区| 337p粉嫩大胆噜噜噜噜噜91av| 国产日韩v精品一区二区| 国产精品第13页| 亚洲自拍偷拍网站| 蜜桃视频一区二区三区 | 久久久久久久一区| 欧美经典三级视频一区二区三区| 亚洲日本在线天堂| 亚洲成人免费观看| 国产一区91精品张津瑜| av一区二区三区黑人| 欧美三级电影一区| 精品美女被调教视频大全网站| 国产偷国产偷亚洲高清人白洁| 亚洲色图制服诱惑 | 欧美色欧美亚洲另类二区| 日韩一区二区在线观看视频| 国产婷婷色一区二区三区四区 | 中文一区二区完整视频在线观看 | 国产精品免费视频观看| 亚洲激情校园春色| 日韩影院精彩在线| av在线不卡免费看| 欧美精品色一区二区三区| 久久婷婷综合激情| 亚洲已满18点击进入久久| 蜜桃av一区二区三区电影| 国产69精品久久久久777| 色婷婷av一区二区三区大白胸| 欧美一区二区在线免费观看| 国产精品久久一级| 久久精品72免费观看| 99在线精品一区二区三区| 欧美一级一区二区| 亚洲男人的天堂一区二区| 国产麻豆精品视频| 欧美日韩和欧美的一区二区| 国产日韩欧美在线一区| 午夜精品aaa| 9i在线看片成人免费| 欧美变态tickling挠脚心| 一区二区在线观看免费| 国产一区二区三区四区五区入口| 91久久精品一区二区三区| 久久这里只精品最新地址| 日韩精品免费专区| 91欧美激情一区二区三区成人| 精品少妇一区二区三区视频免付费| 亚洲欧美激情插| 成人小视频免费在线观看| 日韩欧美亚洲国产另类| 一级日本不卡的影视| 成人性生交大片免费| 欧美大片一区二区| 亚洲va欧美va人人爽| 色综合天天综合狠狠| 欧美国产综合色视频| 久久成人免费网站| 制服.丝袜.亚洲.另类.中文| 亚洲精品免费播放| 99视频国产精品| 国产精品色在线观看| 国产精品911| 久久亚洲私人国产精品va媚药| 日韩高清在线不卡| 欧美色男人天堂| 亚洲一区二区三区四区在线| 91福利视频网站| 亚洲欧美日韩国产中文在线| kk眼镜猥琐国模调教系列一区二区| 久久综合九色欧美综合狠狠 | 午夜视频在线观看一区二区三区 | 7777精品伊人久久久大香线蕉完整版| 亚洲精品第一国产综合野| 色综合久久综合中文综合网| 国产精品久99| 不卡欧美aaaaa| 国产精品成人在线观看| 成年人国产精品| 国产精品久久久久久久久动漫| 国产91在线观看| 国产亚洲精品超碰| 成人丝袜高跟foot| 中文字幕中文字幕一区| av高清久久久| 一区二区久久久| 欧美另类变人与禽xxxxx| 婷婷中文字幕综合| 欧美一区二区三区小说| 久久丁香综合五月国产三级网站| 精品少妇一区二区三区免费观看| 麻豆传媒一区二区三区| 久久综合一区二区| 成人av小说网| 亚洲国产毛片aaaaa无费看| 欧美老肥妇做.爰bbww视频| 麻豆免费看一区二区三区| 久久久久国色av免费看影院| 高清不卡在线观看| 亚洲综合色丁香婷婷六月图片| 欧美三级电影网站| 精品一区二区免费视频| 中文字幕av一区二区三区免费看| 不卡一区在线观看| 亚洲与欧洲av电影| 欧美成人猛片aaaaaaa| 国产成人午夜视频| 亚洲一区在线观看免费观看电影高清| 欧美日本乱大交xxxxx| 狠狠色狠狠色综合日日91app| 国产精品美女一区二区| 在线视频中文字幕一区二区| 午夜精品福利视频网站| 国产日产亚洲精品系列| 日本高清无吗v一区| 蜜臀a∨国产成人精品| 亚洲欧洲国产日本综合| 欧美日韩黄色影视| 成人激情免费电影网址| 亚洲一区成人在线| 国产亚洲一区字幕| 欧美日韩久久一区| 国产99一区视频免费 | 久久超碰97人人做人人爱| 中文字幕一区二区三区色视频| 欧美视频在线播放| 国产成人精品免费视频网站| 亚洲一区二区三区四区的| 欧美成人video| 91成人国产精品| 精品在线一区二区三区| 一区二区三区精品久久久| 久久免费精品国产久精品久久久久| 色哟哟精品一区| 国产精品一区二区三区四区| 一区二区免费看| 国产精品无遮挡| 日韩精品一区二区三区老鸭窝| 色综合久久99| 国产精品一区二区三区网站| 日韩精品一二三区| 亚洲麻豆国产自偷在线| 久久精品夜色噜噜亚洲aⅴ| 欧美人体做爰大胆视频|