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

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

?? linux內(nèi)核原代碼head.s部分的注釋.txt

?? 學(xué)習(xí)(編程技巧_編程知識(shí)_程序代碼),是學(xué)習(xí)編程不可多得的學(xué)習(xí)精驗(yàn)
?? TXT
字號(hào):
linux內(nèi)核原代碼head.s部分的注釋
 

--------------------------------------------------------------------------------
 
第八軍團(tuán) 時(shí)間:2004-1-23 15:47:40 
   
/*
  * head.s contains the 32-bit startup code.
  *
  * NOTE!!! Startup happens at absolute address 0x00000000, which is also where
  * the page directory will exist. The startup code will be overwritten by
  * the page directory.
  */
  .text
  .globl _idt,_gdt,_pg_dir
  _pg_dir:
  startup_32:
  movl $0x10,%eax @@ds,es,fs,gs指向內(nèi)核數(shù)據(jù)段
  mov %ax,%ds
  mov %ax,%es
  mov %ax,%fs
  mov %ax,%gs
  lss _stack_start,%esp @@ds送ss esp 指向stack_start (在sched.c定義)
   @@進(jìn)入保護(hù)模式的堆棧段的第一次變化,很奇怪
   @@為什么堆棧段也可正向增漲?
  call setup_idt
  call setup_gdt
  movl $0x10,%eax # reload all the segment registers
  mov %ax,%ds # after changing gdt. CS was already
  mov %ax,%es # reloaded in 'setup_gdt' @@ 有reload??
  mov %ax,%fs
  mov %ax,%gs
  lss _stack_start,%esp
  xorl %eax,%eax
  1: incl %eax # check that A20 really IS enabled
  movl %eax,0x000000
  cmpl %eax,0x100000 @@這是怎么測(cè)的 0x100000為什么值,
   @@明白,a20 not
  enable,0x000000就是0x100000
  je 1b
  movl %cr0,%eax # check math chip
  andl $0x80000011,%eax # Save PG,ET,PE
  testl $0x10,%eax
  jne 1f # ET is set - 387 is present
  orl $4,%eax # else set emulate bit
  1: movl %eax,%cr0
  jmp after_page_tables @@注意,用jmp 不call,不返回
  /*
  * setup_idt
  *
  * sets up a idt with 256 entries pointing to
  * ignore_int, interrupt gates. It then loads
  * idt. Everything that wants to install itself
  * in the idt-table may do so themselves. Interrupts
  * are enabled elsewhere, when we can be relatively
  * sure everything is ok. This routine will be over-
  * written by the page tables.
  */
  setup_idt:
  lea ignore_int,%edx
  movl $0x00080000,%eax
  movw %dx,%ax /* selector = 0x0008 = cs */
  movw $0x8E00,%dx /* interrupt gate - dpl=0, present */
   @@ ignore_int 低16-->ax 高16-->edx高字 
@@ 8e00-->dx 8-->eax高字
  lea _idt,%edi
  mov $256,%ecx
  rp_sidt:
  movl %eax,(%edi)
  movl %edx,4(%edi)
  addl $8,%edi
  dec %ecx
  jne rp_sidt
  lidt idt_descr
  ret 

/*
  * setup_gdt
  *
  * This routines sets up a new gdt and loads it.
  * Only two entries are currently built, the same
  * ones that were built in init.s. The routine
  * is VERY complicated at two whole lines, so this
  * rather long comment is certainly needed :-).
  * This routine will beoverwritten by the page tables.
  */
  setup_gdt:
  lgdt gdt_descr
  ret @@跳到main函數(shù) 

.org 0x1000
  pg0: 

.org 0x2000
  pg1: 

.org 0x3000
  pg2: # This is not used yet, but if you
   # want to expand past 8 Mb, you'll have
   # to use it. 

.org 0x4000
  after_page_tables:
  pushl $0 # These are the parameters to main :-)
  pushl $0
  pushl $0
  pushl $L6 # return address for main, if it decides to.
  pushl $_main
  jmp setup_paging @@再jmp
  L6:
  jmp L6 # main should never return here, but
   # just in case, we know what happens. 

/* This is the default interrupt "handler" :-) */
  .align 2
  ignore_int:
  incb 0xb8000+160 # put something on the screen
  movb $2,0xb8000+161 # so that we know something
  iret # happened
   

/*
  * Setup_paging
  *
  * This routine sets up paging by setting the page bit
  * in cr0. The page tables are set up, identity-mapping
  * the first 8MB. The pager assumes that no illegal
  * addresses are produced (ie >4Mb on a 4Mb machine).
  *
  * NOTE! Although all physical memory should be identity
  * mapped by this routine, only the kernel page functions
  * use the >1Mb addresses directly. All "normal" functions
  * use just the lower 1Mb, or the local data space, which
  * will be mapped to some other place - mm keeps track of
  * that.
  *
  * For those with more memory than 8 Mb - tough luck. I've
  * not got it, why should you :-) The source is here. Change
  * it. (Seriously - it shouldn't be too difficult. Mostly
  * change some constants etc. I left it at 8Mb, as my machine
  * even cannot be extended past that (ok, but it was cheap :-)
  * I've tried to show which constants to change by having
  * some kind of marker at them (search for "8Mb"), but I
  * won't guarantee that's all :-( )
  */
  .align 2
  setup_paging:
  movl $1024*3,%ecx @@pg_dir pg_table 清零
  xorl %eax,%eax
  xorl %edi,%edi /* pg_dir is at 0x000 */
  cld;rep;stosl
  movl $pg0+7,_pg_dir /* set present bit/user r/w */
  movl $pg1+7,_pg_dir+4 /* --------- " " --------- */
  movl $pg1+4092,%edi
  movl $0x7ff007,%eax /* 8Mb - 4096 + 7 (r/w user,p) */
  std
  1: stosl /* fill pages backwards - more efficient :-) */
  subl $0x1000,%eax
  jge 1b @@ greater or equal
  xorl %eax,%eax /* pg_dir is at 0x0000 */
  movl %eax,%cr3 /* cr3 - page directory start */
  movl %cr0,%eax
  orl $0x80000000,%eax
  movl %eax,%cr0 /* set paging (PG) bit */
  ret /* this also flushes prefetch-queue */ 

@@頁(yè)目錄pg_dir=0 僅兩項(xiàng)(8M),
  @@pg1,pg0頁(yè)表逆向填充,pg0的首頁(yè)仍為零
  @@這樣映射,線性地址=物理地址 

.align 2
  .word 0
  idt_descr:
  .word 256*8-1 # idt contains 256 entries
  .long _idt
  .align 2
  .word 0
  gdt_descr:
  .word 256*8-1 # so does gdt (not that that's any @@和前面head.S差一??
  .long _gdt # magic number, but it works for me :^) 

.align 3
  _idt: .fill 256,8,0 # idt is uninitialized 

_gdt: .quad 0x0000000000000000 /* NULL descriptor */
  .quad 0x00c09a00000007ff /* 8Mb */
  .quad 0x00c09200000007ff /* 8Mb */
  .quad 0x0000000000000000 /* TEMPORARY - don't use */
  .fill 252,8,0 /* space for LDT's and TSS's etc */
  @@內(nèi)核 邏輯地址(不含段寄存器)=線性地址


 
 

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
香蕉影视欧美成人| 国产一区二区三区国产| 26uuu国产电影一区二区| 成+人+亚洲+综合天堂| 奇米影视在线99精品| 亚洲你懂的在线视频| 欧美不卡一区二区三区| 欧美午夜影院一区| 97se亚洲国产综合自在线观| 精品无码三级在线观看视频| 亚洲国产精品久久人人爱| 亚洲欧洲精品一区二区三区| 精品免费视频一区二区| 欧美福利电影网| 色婷婷综合久久久久中文一区二区 | 久久久综合精品| 在线观看视频一区二区欧美日韩| 国产成人自拍在线| 精品一区二区免费| 秋霞国产午夜精品免费视频| 亚洲综合在线第一页| 中文字幕日本不卡| 国产日韩精品久久久| 久久综合色天天久久综合图片| 欧美老年两性高潮| 欧美亚洲日本国产| 色呦呦国产精品| 99精品视频在线观看| 懂色av中文字幕一区二区三区| 国产一区二区三区在线观看免费视频| 蜜桃免费网站一区二区三区| 午夜精品成人在线视频| 亚洲一区精品在线| 亚洲va韩国va欧美va精品| 亚洲精品成人在线| 亚洲猫色日本管| 一区二区视频在线看| 自拍偷拍国产亚洲| 亚洲男女毛片无遮挡| 亚洲精品国久久99热| 亚洲男人天堂av网| 亚洲免费三区一区二区| 亚洲欧美日韩一区二区 | 亚洲午夜视频在线观看| 亚洲精品成人天堂一二三| 亚洲欧美日韩电影| 一区二区欧美国产| 亚洲精品高清在线观看| 夜夜精品浪潮av一区二区三区| 一区二区三区欧美久久| 亚洲国产一区视频| 三级成人在线视频| 久久爱www久久做| 国产精品资源在线看| 国产精品一二三区在线| 成人一区二区三区中文字幕| 99国产精品久久久久| 欧美在线观看一区二区| 欧美一区二区三区视频免费播放| 56国语精品自产拍在线观看| 欧美www视频| 中文字幕一区二区三区四区| 国产精品国产自产拍在线| 亚洲欧美日韩电影| 奇米精品一区二区三区四区| 激情图片小说一区| 国产91精品露脸国语对白| 色狠狠av一区二区三区| 91精品久久久久久久91蜜桃| 久久久久久久久免费| 亚洲三级在线播放| 日本成人中文字幕在线视频| 精品在线视频一区| 91在线小视频| 日韩欧美一级在线播放| 亚洲国产经典视频| 亚洲成av人片一区二区梦乃| 国产一区二区三区在线观看免费| 91同城在线观看| 日韩三级免费观看| 中文字幕亚洲区| 蜜桃av一区二区| 91色视频在线| 日韩欧美国产精品| 亚洲女同ⅹxx女同tv| 精品一二三四在线| 在线视频亚洲一区| 久久久久国产免费免费| 亚洲国产成人高清精品| 国产麻豆9l精品三级站| 精品视频一区三区九区| 欧美韩国日本不卡| 日韩高清电影一区| 91在线免费播放| 欧美成人a视频| 亚洲成人免费观看| av在线不卡电影| 精品福利一区二区三区免费视频| 亚洲高清一区二区三区| 成人精品国产福利| 精品国产三级电影在线观看| 一区二区三区资源| 成人综合在线网站| 精品久久久网站| 日韩有码一区二区三区| 色综合一区二区| 日本一区二区视频在线| 美腿丝袜亚洲综合| 欧美日韩三级一区| 亚洲图片另类小说| 国产·精品毛片| 欧美videos中文字幕| 亚洲成人免费在线观看| 99热99精品| 日本一区二区成人| 国产精品亚洲第一| 久久奇米777| 精品综合免费视频观看| 欧美精品在线视频| 亚洲一区二区美女| 色噜噜狠狠色综合欧洲selulu| 国产精品成人免费| 成av人片一区二区| 国产精品视频一二三区| 国产高清不卡一区| 久久久午夜电影| 国内偷窥港台综合视频在线播放| 日韩视频一区二区三区| 午夜不卡av在线| 欧美午夜一区二区| 性感美女极品91精品| 欧美日韩视频在线一区二区 | 麻豆精品视频在线观看免费| 欧美日韩色一区| 日韩高清欧美激情| 欧美一区二区高清| 美女网站色91| 精品福利一二区| 国产一区二区三区免费| 2021久久国产精品不只是精品| 精品一区二区综合| 26uuu另类欧美亚洲曰本| 精品一区二区三区影院在线午夜| 欧美精品一区二区三区一线天视频 | 日韩毛片高清在线播放| 成人免费视频一区二区| 亚洲人成人一区二区在线观看| 91免费版在线| 一区二区三区在线免费视频| 欧美日韩午夜精品| 毛片一区二区三区| 久久精品夜色噜噜亚洲a∨| 懂色av一区二区三区免费观看| 中日韩免费视频中文字幕| 99精品视频一区| 五月天视频一区| 精品黑人一区二区三区久久 | 亚洲图片有声小说| 777色狠狠一区二区三区| 久久狠狠亚洲综合| 国产日产欧美一区二区视频| 97se亚洲国产综合自在线| 亚洲国产日韩一区二区| 欧美一区二区三区四区五区| 国产乱码字幕精品高清av | 欧美美女激情18p| 久久av资源网| 中文字幕中文字幕一区二区| 欧美午夜在线一二页| 黄色日韩三级电影| 亚洲欧美在线观看| 在线播放中文字幕一区| 风流少妇一区二区| 亚洲一区在线电影| 精品国产成人在线影院| 99热国产精品| 另类小说综合欧美亚洲| 国产精品初高中害羞小美女文| 欧美日韩在线播放一区| 国产精品一色哟哟哟| 一区二区三区在线视频观看58| 337p粉嫩大胆噜噜噜噜噜91av| 色综合视频在线观看| 麻豆精品新av中文字幕| 亚洲欧洲综合另类在线| 精品美女被调教视频大全网站| 一本一本大道香蕉久在线精品| 美女网站视频久久| 一区二区欧美精品| 国产丝袜欧美中文另类| 91精品欧美久久久久久动漫 | 精品盗摄一区二区三区| 欧美在线影院一区二区| 国产精品系列在线播放| 视频一区二区三区中文字幕| 国产精品久久精品日日| 久久综合av免费| 欧美日韩成人综合在线一区二区| 国产精品 日产精品 欧美精品| 亚洲第一久久影院|