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

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

?? diskboot.s

?? grub 1.95 linux 的bootloader 源代碼
?? S
字號:
/* *  GRUB  --  GRand Unified Bootloader *  Copyright (C) 1999,2000,2001,2002,2006   Free Software Foundation, Inc. * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#include <grub/machine/boot.h>	/* *  defines for the code go here */	/* Absolute addresses	   This makes the assembler generate the address without support	   from the linker. (ELF can't relocate 16-bit addresses!) */#define ABS(x) (x-_start+GRUB_BOOT_MACHINE_KERNEL_ADDR)		/* Print message string */#define MSG(x)	movw $ABS(x), %si; call message	.file	"diskboot.S"	.text	/* Tell GAS to generate 16-bit instructions so that this code works	   in real mode. */	.code16	.globl	start, _startstart:_start:		/*	 * _start is loaded at 0x2000 and is jumped to with	 * CS:IP 0:0x2000 in kernel.	 */	/* 	 * we continue to use the stack for boot.img and assume that	 * some registers are set to correct values. See boot.S	 * for more information.	 */		/* save drive reference first thing! */	pushw	%dx	/* print a notification message on the screen */	pushw	%si	MSG(notification_string)	popw	%si		/* this sets up for the first run through "bootloop" */	movw	$ABS(firstlist - GRUB_BOOT_MACHINE_LIST_SIZE), %di	/* save the sector number of the second sector in %ebp */	movl	(%di), %ebp        /* this is the loop for reading the rest of the kernel in */bootloop:	/* check the number of sectors to read */	cmpw	$0, 8(%di)	/* if zero, go to the start function */	je	bootitsetup_sectors:		/* check if we use LBA or CHS */	cmpb	$0, -1(%si)	/* jump to chs_mode if zero */	je	chs_modelba_mode:		/* load logical sector start */	movl	(%di), %ebx	movl	4(%di), %ecx	/* the maximum is limited to 0x7f because of Phoenix EDD */	xorl	%eax, %eax	movb	$0x7f, %al	/* how many do we really want to read? */	cmpw	%ax, 8(%di)	/* compare against total number of sectors */	/* which is greater? */	jg	1f	/* if less than, set to total */	movw	8(%di), %ax1:		/* subtract from total */	subw	%ax, 8(%di)	/* add into logical sector start */	addl	%eax, (%di)	adcl	$0, 4(%di)	/* set up disk address packet */	/* the size and the reserved byte */	movw	$0x0010, (%si)	/* the number of sectors */	movw	%ax, 2(%si)	/* the absolute address */	movl	%ebx, 8(%si)	movl	%ecx, 12(%si)	/* the segment of buffer address */	movw	$GRUB_BOOT_MACHINE_BUFFER_SEG, 6(%si)	/* save %ax from destruction! */	pushw	%ax	/* the offset of buffer address */	movw	$0, 4(%si)/* * BIOS call "INT 0x13 Function 0x42" to read sectors from disk into memory *	Call with	%ah = 0x42 *			%dl = drive number *			%ds:%si = segment:offset of disk address packet *	Return: *			%al = 0x0 on success; err code on failure */	movb	$0x42, %ah	int	$0x13	jc	read_error	movw	$GRUB_BOOT_MACHINE_BUFFER_SEG, %bx	jmp	copy_buffer			chs_mode:		/* load logical sector start (top half) */	movl	4(%di), %eax	orl	%eax, %eax	jnz	geometry_error	/* load logical sector start (bottom half) */	movl	(%di), %eax	/* zero %edx */	xorl	%edx, %edx	/* divide by number of sectors */	divl	(%si)	/* save sector start */	movb	%dl, 10(%si)	xorl	%edx, %edx	/* zero %edx */	divl	4(%si)		/* divide by number of heads */	/* save head start */	movb	%dl, 11(%si)	/* save cylinder start */	movw	%ax, 12(%si)	/* do we need too many cylinders? */	cmpw	8(%si), %ax	jge	geometry_error	/* determine the maximum sector length of this read */	movw	(%si), %ax	/* get number of sectors per track/head */	/* subtract sector start */	subb	10(%si), %al	/* how many do we really want to read? */	cmpw	%ax, 8(%di)	/* compare against total number of sectors */	/* which is greater? */	jg	2f	/* if less than, set to total */	movw	8(%di), %ax2:		/* subtract from total */	subw	%ax, 8(%di)	/* add into logical sector start */	addl	%eax, (%di)	adcl	$0, 4(%di)/* *  This is the loop for taking care of BIOS geometry translation (ugh!) */	/* get high bits of cylinder */	movb	13(%si), %dl	shlb	$6, %dl		/* shift left by 6 bits */	movb	10(%si), %cl	/* get sector */	incb	%cl		/* normalize sector (sectors go					from 1-N, not 0-(N-1) ) */	orb	%dl, %cl	/* composite together */	movb	12(%si), %ch	/* sector+hcyl in cl, cylinder in ch */	/* restore %dx */	popw	%dx	pushw	%dx	/* head number */	movb	11(%si), %dh	pushw	%ax	/* save %ax from destruction! *//* * BIOS call "INT 0x13 Function 0x2" to read sectors from disk into memory *	Call with	%ah = 0x2 *			%al = number of sectors *			%ch = cylinder *			%cl = sector (bits 6-7 are high bits of "cylinder") *			%dh = head *			%dl = drive (0x80 for hard disk, 0x0 for floppy disk) *			%es:%bx = segment:offset of buffer *	Return: *			%al = 0x0 on success; err code on failure */	movw	$GRUB_BOOT_MACHINE_BUFFER_SEG, %bx	movw	%bx, %es	/* load %es segment with disk buffer */	xorw	%bx, %bx	/* %bx = 0, put it at 0 in the segment */	movb	$0x2, %ah	/* function 2 */	int	$0x13	jc	read_error	/* save source segment */	movw	%es, %bx	copy_buffer:		/* load addresses for copy from disk buffer to destination */	movw	10(%di), %es	/* load destination segment */	/* restore %ax */	popw	%ax	/* determine the next possible destination address (presuming		512 byte sectors!) */	shlw	$5, %ax		/* shift %ax five bits to the left */	addw	%ax, 10(%di)	/* add the corrected value to the destination				   address for next time */	/* save addressing regs */	pusha	pushw	%ds	/* get the copy length */	shlw	$3, %ax	movw	%ax, %cx	xorw	%di, %di	/* zero offset of destination addresses */	xorw	%si, %si	/* zero offset of source addresses */	movw	%bx, %ds	/* restore the source segment */	cld		/* sets the copy direction to forward */	/* perform copy */	rep		/* sets a repeat */	movsw		/* this runs the actual copy */	/* restore addressing regs and print a dot with correct DS 	   (MSG modifies SI, which is saved, and unused AX and BX) */	popw	%ds	MSG(notification_step)	popa	/* check if finished with this dataset */	cmpw	$0, 8(%di)	jne	setup_sectors	/* update position to load from */	subw	$GRUB_BOOT_MACHINE_LIST_SIZE, %di	/* jump to bootloop */	jmp	bootloop/* END OF MAIN LOOP */bootit:	/* print a newline */	MSG(notification_done)	popw	%dx	/* this makes sure %dl is our "boot" drive */	ljmp	$0, $(GRUB_BOOT_MACHINE_KERNEL_ADDR + 0x200)/* * BIOS Geometry translation error (past the end of the disk geometry!). */geometry_error:	MSG(geometry_error_string)	jmp	general_error/* * Read error on the disk. */read_error:	MSG(read_error_string)general_error:	MSG(general_error_string)/* go here when you need to stop the machine hard after an error condition */stop:	jmp	stopnotification_string:	.string "Loading kernel"notification_step:	.string "."notification_done:	.string "\r\n"	geometry_error_string:	.string "Geom"read_error_string:	.string "Read"general_error_string:	.string " Error"/* * message: write the string pointed to by %si * *   WARNING: trashes %si, %ax, and %bx */	/*	 * Use BIOS "int 10H Function 0Eh" to write character in teletype mode	 *	%ah = 0xe	%al = character	 *	%bh = page	%bl = foreground color (graphics modes)	 */1:	movw	$0x0001, %bx	movb	$0xe, %ah	int	$0x10		/* display a byte */	incw	%simessage:	movb	(%si), %al	cmpb	$0, %al	jne	1b	/* if not end of string, jmp to display */	retlastlist:/* *  This area is an empty space between the main body of code below which *  grows up (fixed after compilation, but between releases it may change *  in size easily), and the lists of sectors to read, which grows down *  from a fixed top location. */	.word 0	.word 0	. = _start + 0x200 - GRUB_BOOT_MACHINE_LIST_SIZE	        /* fill the first data listing with the default */blocklist_default_start:	/* this is the sector start parameter, in logical sectors from	   the start of the disk, sector 0 */	.long 2, 0blocklist_default_len:	/* this is the number of sectors to read the command "install"	   will fill this up */	.word 0blocklist_default_seg:	/* this is the segment of the starting address to load the data into */	.word (GRUB_BOOT_MACHINE_KERNEL_SEG + 0x20)	firstlist:	/* this label has to be after the list data!!! */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产夜色精品一区二区av| 亚洲精品一区二区三区四区高清 | 国产人成亚洲第一网站在线播放 | 国产在线看一区| 美国十次综合导航| 久久se精品一区精品二区| 奇米影视在线99精品| 美女在线一区二区| 九九**精品视频免费播放| 亚洲一区在线免费观看| 亚洲午夜成aⅴ人片| 亚洲图片有声小说| 蜜臀av亚洲一区中文字幕| 日av在线不卡| 国产精品一区二区你懂的| 国产成人精品一区二区三区网站观看| 国产乱理伦片在线观看夜一区| 国产成人h网站| 色哦色哦哦色天天综合| 欧美日韩亚洲另类| 精品国产网站在线观看| 中文字幕欧美激情一区| 亚洲人成网站精品片在线观看| 亚洲在线视频一区| 久久精品免费看| 波多野结衣中文字幕一区二区三区 | 亚洲美女少妇撒尿| 日本不卡视频一二三区| 国产乱理伦片在线观看夜一区| av网站免费线看精品| 欧美老女人在线| 国产精品天干天干在观线| 亚洲国产成人va在线观看天堂| 日本不卡视频一二三区| 不卡高清视频专区| 欧美精品在欧美一区二区少妇| 久久一二三国产| 亚洲一区二区三区四区中文字幕| 奇米在线7777在线精品| 99久久婷婷国产综合精品| 欧美一区二区三区视频免费播放 | 91麻豆高清视频| 精品福利一区二区三区| 亚洲黄色在线视频| 懂色av中文字幕一区二区三区| 欧洲一区在线观看| 国产精品毛片a∨一区二区三区| 亚洲国产乱码最新视频| 成熟亚洲日本毛茸茸凸凹| 6080日韩午夜伦伦午夜伦| 亚洲欧美一区二区视频| 黑人巨大精品欧美一区| 911国产精品| 亚洲综合一区二区精品导航| 国内久久婷婷综合| 4438x亚洲最大成人网| 亚洲欧美乱综合| 成人av动漫网站| 国产欧美一区二区精品性色| 日韩精品国产欧美| 欧美日韩一区二区三区免费看| 国产精品美女久久久久久久久久久| 奇米色一区二区三区四区| 日本丶国产丶欧美色综合| 久久精品男人天堂av| 精品亚洲aⅴ乱码一区二区三区| 欧美影院一区二区三区| 亚洲精品欧美激情| 91在线观看污| 自拍偷拍亚洲综合| 91色婷婷久久久久合中文| 国产精品久久久久永久免费观看| 国产高清视频一区| 久久精品一区二区三区不卡| 极品尤物av久久免费看| 欧美精品一区二区三| 国内成+人亚洲+欧美+综合在线| 日韩一区二区免费电影| 日韩精品视频网| 欧美一区二区三区性视频| 日韩电影在线观看电影| 91麻豆精品91久久久久久清纯| 亚洲成人自拍一区| 日韩一级片网站| 国产精品一二三四| 国产精品久久久久影院| 91网址在线看| 肉色丝袜一区二区| 欧美成人精品高清在线播放| 精油按摩中文字幕久久| 久久久五月婷婷| 成人av电影在线网| 亚洲一区二区三区美女| 91.麻豆视频| 国产精品一二三区| 自拍偷拍亚洲欧美日韩| 欧美日本在线观看| 加勒比av一区二区| 综合色中文字幕| 欧美精品三级日韩久久| 国精产品一区一区三区mba视频| 国产亚洲欧美在线| 欧美在线看片a免费观看| 日本亚洲最大的色成网站www| 欧美精品一区男女天堂| 91欧美一区二区| 免费久久99精品国产| 中文av一区二区| 欧美精品高清视频| 国产成人免费网站| 午夜精品一区二区三区电影天堂| 欧美成人vps| 91久久国产最好的精华液| 免费人成在线不卡| 亚洲精品老司机| 久久久99久久| 欧美日韩一二区| 成人性生交大片免费看中文 | 免费在线看一区| 亚洲女人的天堂| 久久久久青草大香线综合精品| 91同城在线观看| 国产一区999| 日韩电影一区二区三区四区| 国产精品毛片高清在线完整版| 欧美男人的天堂一二区| www.久久久久久久久| 精久久久久久久久久久| 亚洲一区二区在线播放相泽| 国产午夜精品久久久久久久| 69久久99精品久久久久婷婷 | 亚洲国产欧美在线人成| 国产精品三级av| 久久综合久色欧美综合狠狠| 在线欧美一区二区| www.久久精品| 国产精品自拍一区| 九九热在线视频观看这里只有精品| 一区二区三区国产精华| 国产精品私人影院| 久久久精品黄色| 精品国产一区二区三区四区四| 欧美日韩精品一区二区三区四区 | 亚洲自拍偷拍网站| 国产精品的网站| 国产欧美精品一区二区色综合 | 日韩精品亚洲专区| 午夜电影一区二区| 亚洲第一成人在线| 香蕉久久夜色精品国产使用方法 | 亚洲va欧美va国产va天堂影院| 亚洲欧美日本韩国| 一区二区三区欧美在线观看| 国产日本一区二区| 久久久午夜精品| 国产亚洲精品中文字幕| 久久久久综合网| 日本一区二区三区免费乱视频| 国产日韩综合av| 中文字幕的久久| 中文字幕一区二区在线播放| 椎名由奈av一区二区三区| 一区二区三区精品视频在线| 亚洲精品国产a| 亚洲国产综合91精品麻豆| 亚洲电影在线免费观看| 亚洲综合久久久久| 日韩高清在线不卡| 国产一区二区三区不卡在线观看 | 国产欧美一区二区精品忘忧草| 国产视频一区在线播放| 国产精品美女一区二区三区| 国产精品不卡一区二区三区| 综合色中文字幕| 日本不卡一区二区| 国产精品18久久久| 91视视频在线观看入口直接观看www| 一本久道中文字幕精品亚洲嫩| 一本一道波多野结衣一区二区| 欧美日韩一区在线观看| 26uuu国产一区二区三区| 国产精品久久午夜夜伦鲁鲁| 亚洲国产日韩在线一区模特| 九九久久精品视频| 91美女福利视频| 日韩精品一区二区三区swag | 成人ar影院免费观看视频| 欧美在线免费播放| www精品美女久久久tv| 国产精品久久久久四虎| 日韩影院在线观看| 成人h精品动漫一区二区三区| 在线亚洲一区观看| 国产亚洲一二三区| 亚洲va欧美va天堂v国产综合| 国产一区 二区 三区一级| 欧美性猛交一区二区三区精品| 久久久久久麻豆| 日本特黄久久久高潮| 91麻豆swag|