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

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

?? kernel.asm

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

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


SELECTOR_KERNEL_CS	equ	8

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

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

bits 32

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

[section .text]	; 代碼在此

global _start	; 導(dǎo)出 _start

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 以及相應(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 代碼的時候一定要保證 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

	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).
	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




?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩成人一级片| 欧美国产日韩精品免费观看| 午夜亚洲国产au精品一区二区| 91福利在线观看| 一区二区高清免费观看影视大全| 色婷婷国产精品| 日韩在线卡一卡二| 久久人人97超碰com| 99国产精品一区| 日韩精品久久理论片| 久久久777精品电影网影网| 成人动漫一区二区| 亚洲一区二区中文在线| 日韩亚洲电影在线| 国产精品主播直播| 亚洲免费在线看| 日韩欧美专区在线| 成人精品亚洲人成在线| 亚洲国产日韩在线一区模特| 精品久久久久久最新网址| 成人av午夜影院| 亚洲成人中文在线| 久久麻豆一区二区| 在线观看日韩高清av| 久久99国产精品免费网站| 亚洲视频一区在线观看| 正在播放亚洲一区| eeuss鲁片一区二区三区在线观看| 亚洲黄色小说网站| 久久人人爽人人爽| 欧美日韩日日夜夜| 成人精品视频一区| 蜜桃91丨九色丨蝌蚪91桃色| 自拍偷拍欧美激情| 日韩精品一区二| 在线观看日韩国产| 国产老妇另类xxxxx| 婷婷中文字幕一区三区| 中文字幕一区二区三区蜜月| 欧美一区二区三区免费视频| aaa国产一区| 激情六月婷婷久久| 婷婷久久综合九色综合伊人色| 国产精品免费av| 欧美精品一区二区三区高清aⅴ| 色婷婷av一区| 99热在这里有精品免费| 国内精品在线播放| 日韩一区欧美二区| 亚洲国产三级在线| 亚洲综合网站在线观看| 26uuu成人网一区二区三区| 91麻豆精品在线观看| 国产剧情av麻豆香蕉精品| 国产精品一二三四| 裸体在线国模精品偷拍| 亚洲va天堂va国产va久| 综合久久综合久久| 中文字幕乱码一区二区免费| 久久美女艺术照精彩视频福利播放| 91麻豆精品91久久久久久清纯 | 久久精品国产99国产精品| 亚洲综合一区二区| 亚洲另类在线视频| 亚洲特黄一级片| 国产精品久久久久9999吃药| 国产欧美一区二区在线观看| 久久久久久久免费视频了| 精品国产91乱码一区二区三区| 日韩一区二区在线看| 欧美精品久久久久久久多人混战| xnxx国产精品| 在线不卡一区二区| 在线精品视频一区二区| k8久久久一区二区三区| 国产suv精品一区二区883| 国产一区三区三区| 国产精品影音先锋| 国产高清精品在线| 高清成人在线观看| 99九九99九九九视频精品| 97久久超碰国产精品| 99精品视频一区二区| 色天天综合久久久久综合片| 色婷婷综合久久久| 欧美曰成人黄网| 欧美精品 日韩| 精品久久久久久久人人人人传媒 | 国产成人在线影院| 成人黄色电影在线| 在线观看国产一区二区| 欧美日韩精品一区二区天天拍小说| 亚洲夂夂婷婷色拍ww47| 国产成人午夜片在线观看高清观看| 极品尤物av久久免费看| 国产一区二区三区四区五区入口| 国产美女精品一区二区三区| 成人综合婷婷国产精品久久蜜臀 | 麻豆国产精品777777在线| 久久99日本精品| 国产传媒一区在线| 91亚洲精品乱码久久久久久蜜桃| 欧美三级三级三级爽爽爽| 日韩欧美123| 中文幕一区二区三区久久蜜桃| 亚洲视频综合在线| 日本视频一区二区三区| 丁香亚洲综合激情啪啪综合| 色婷婷综合久色| 日韩美女一区二区三区四区| 国产精品美女久久久久高潮| 亚洲高清不卡在线| 国产成人免费视频 | 337p亚洲精品色噜噜噜| 欧美tickling挠脚心丨vk| 欧美在线色视频| 91麻豆精品国产无毒不卡在线观看| 欧美精品一区二区三区蜜臀| 亚洲欧洲综合另类| 狠狠色狠狠色综合日日91app| 9久草视频在线视频精品| 欧美一区二区精品| 亚洲视频在线一区二区| 蜜乳av一区二区三区| 色哟哟精品一区| 国产欧美一区二区在线| 日韩黄色片在线观看| 91视频一区二区三区| 2024国产精品视频| 天天做天天摸天天爽国产一区| 欧美日韩不卡一区二区| 久久精品综合网| 老司机午夜精品| 欧美视频精品在线观看| 日本一区二区不卡视频| 九九九精品视频| 欧美综合欧美视频| 中文字幕一区二区在线播放| 极品瑜伽女神91| 国产999精品久久| a在线播放不卡| 精品国产欧美一区二区| 一区二区高清免费观看影视大全 | 蜜桃精品视频在线观看| 91论坛在线播放| 国产亚洲va综合人人澡精品| 免费观看一级特黄欧美大片| 欧美午夜电影在线播放| 18成人在线视频| 国产成人免费视频| 久久欧美中文字幕| 狠狠色丁香婷婷综合| 欧美一级一区二区| 日本不卡高清视频| 欧美精品高清视频| 五月婷婷综合在线| 欧美日韩国产高清一区二区三区 | 日韩不卡一区二区三区| 欧美丝袜第三区| 亚洲一区二区三区美女| 91国偷自产一区二区开放时间 | 麻豆91在线观看| 欧美性生活影院| 一区二区三区在线看| www.66久久| 日本sm残虐另类| 91精品国产日韩91久久久久久| 午夜日韩在线电影| 777精品伊人久久久久大香线蕉| 一区二区三区 在线观看视频| 色婷婷亚洲综合| 亚洲一级二级在线| 在线播放日韩导航| 欧美a级理论片| 欧美成va人片在线观看| 国产一区激情在线| 国产精品看片你懂得| 成人av影院在线| 亚洲综合久久av| 884aa四虎影成人精品一区| 久久成人免费电影| 欧美国产日韩亚洲一区| 一本色道久久加勒比精品| 亚洲国产精品一区二区久久恐怖片| 欧美日韩中文国产| 久久99久久99小草精品免视看| 国产大陆亚洲精品国产| 久久久精品一品道一区| www.欧美日韩| 亚洲高清三级视频| 欧美电视剧在线观看完整版| 国产suv精品一区二区6| 一区二区三区四区在线| 日韩一区二区在线观看视频| 国产成人综合视频| 一区二区三区在线观看网站| 日韩一区二区三区免费看 | 国产精品久久久久久福利一牛影视| 91久久精品网| 免费成人你懂的|