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

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

?? kernel.c.texi

?? GRUB 0.93的源代碼。有人說可以當一個很小的操作系統了
?? TEXI
字號:
/* @r{kernel.c - the C part of the kernel} *//* @r{Copyright (C) 1999  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 <multiboot.h>/* @r{Macros.} *//* @r{Check if the bit BIT in FLAGS is set.} */#define CHECK_FLAG(flags,bit)   ((flags) & (1 << (bit)))/* @r{Some screen stuff.} *//* @r{The number of columns.} */#define COLUMNS                 80/* @r{The number of lines.} */#define LINES                   24/* @r{The attribute of an character.} */#define ATTRIBUTE               7/* @r{The video memory address.} */#define VIDEO                   0xB8000/* @r{Variables.} *//* @r{Save the X position.} */static int xpos;/* @r{Save the Y position.} */static int ypos;/* @r{Point to the video memory.} */static volatile unsigned char *video;/* @r{Forward declarations.} */void cmain (unsigned long magic, unsigned long addr);static void cls (void);static void itoa (char *buf, int base, int d);static void putchar (int c);void printf (const char *format, ...);/* @r{Check if MAGIC is valid and print the Multiboot information structure   pointed by ADDR.} */voidcmain (unsigned long magic, unsigned long addr)@{  multiboot_info_t *mbi;    /* @r{Clear the screen.} */  cls ();  /* @r{Am I booted by a Multiboot-compliant boot loader?} */  if (magic != MULTIBOOT_BOOTLOADER_MAGIC)    @{      printf ("Invalid magic number: 0x%x\n", (unsigned) magic);      return;    @}  /* @r{Set MBI to the address of the Multiboot information structure.} */  mbi = (multiboot_info_t *) addr;  /* @r{Print out the flags.} */  printf ("flags = 0x%x\n", (unsigned) mbi->flags);  /* @r{Are mem_* valid?} */  if (CHECK_FLAG (mbi->flags, 0))    printf ("mem_lower = %uKB, mem_upper = %uKB\n",            (unsigned) mbi->mem_lower, (unsigned) mbi->mem_upper);  /* @r{Is boot_device valid?} */  if (CHECK_FLAG (mbi->flags, 1))    printf ("boot_device = 0x%x\n", (unsigned) mbi->boot_device);    /* @r{Is the command line passed?} */  if (CHECK_FLAG (mbi->flags, 2))    printf ("cmdline = %s\n", (char *) mbi->cmdline);  /* @r{Are mods_* valid?} */  if (CHECK_FLAG (mbi->flags, 3))    @{      module_t *mod;      int i;            printf ("mods_count = %d, mods_addr = 0x%x\n",              (int) mbi->mods_count, (int) mbi->mods_addr);      for (i = 0, mod = (module_t *) mbi->mods_addr;           i < mbi->mods_count;           i++, mod += sizeof (module_t))        printf (" mod_start = 0x%x, mod_end = 0x%x, string = %s\n",                (unsigned) mod->mod_start,                (unsigned) mod->mod_end,                (char *) mod->string);    @}  /* @r{Bits 4 and 5 are mutually exclusive!} */  if (CHECK_FLAG (mbi->flags, 4) && CHECK_FLAG (mbi->flags, 5))    @{      printf ("Both bits 4 and 5 are set.\n");      return;    @}  /* @r{Is the symbol table of a.out valid?} */  if (CHECK_FLAG (mbi->flags, 4))    @{      aout_symbol_table_t *aout_sym = &(mbi->u.aout_sym);            printf ("aout_symbol_table: tabsize = 0x%0x, "              "strsize = 0x%x, addr = 0x%x\n",              (unsigned) aout_sym->tabsize,              (unsigned) aout_sym->strsize,              (unsigned) aout_sym->addr);    @}  /* @r{Is the section header table of ELF valid?} */  if (CHECK_FLAG (mbi->flags, 5))    @{      elf_section_header_table_t *elf_sec = &(mbi->u.elf_sec);      printf ("elf_sec: num = %u, size = 0x%x,"              " addr = 0x%x, shndx = 0x%x\n",              (unsigned) elf_sec->num, (unsigned) elf_sec->size,              (unsigned) elf_sec->addr, (unsigned) elf_sec->shndx);    @}  /* @r{Are mmap_* valid?} */  if (CHECK_FLAG (mbi->flags, 6))    @{      memory_map_t *mmap;            printf ("mmap_addr = 0x%x, mmap_length = 0x%x\n",              (unsigned) mbi->mmap_addr, (unsigned) mbi->mmap_length);      for (mmap = (memory_map_t *) mbi->mmap_addr;           (unsigned long) mmap < mbi->mmap_addr + mbi->mmap_length;           mmap = (memory_map_t *) ((unsigned long) mmap                                    + mmap->size + sizeof (mmap->size)))        printf (" size = 0x%x, base_addr = 0x%x%x,"                " length = 0x%x%x, type = 0x%x\n",                (unsigned) mmap->size,                (unsigned) mmap->base_addr_high,                (unsigned) mmap->base_addr_low,                (unsigned) mmap->length_high,                (unsigned) mmap->length_low,                (unsigned) mmap->type);    @}@}    /* @r{Clear the screen and initialize VIDEO, XPOS and YPOS.} */static voidcls (void)@{  int i;  video = (unsigned char *) VIDEO;    for (i = 0; i < COLUMNS * LINES * 2; i++)    *(video + i) = 0;  xpos = 0;  ypos = 0;@}/* @r{Convert the integer D to a string and save the string in BUF. If   BASE is equal to 'd', interpret that D is decimal, and if BASE is   equal to 'x', interpret that D is hexadecimal.} */static voiditoa (char *buf, int base, int d)@{  char *p = buf;  char *p1, *p2;  unsigned long ud = d;  int divisor = 10;    /* @r{If %d is specified and D is minus, put `-' in the head.} */  if (base == 'd' && d < 0)    @{      *p++ = '-';      buf++;      ud = -d;    @}  else if (base == 'x')    divisor = 16;  /* @r{Divide UD by DIVISOR until UD == 0.} */  do    @{      int remainder = ud % divisor;            *p++ = (remainder < 10) ? remainder + '0' : remainder + 'a' - 10;    @}  while (ud /= divisor);  /* @r{Terminate BUF.} */  *p = 0;    /* @r{Reverse BUF.} */  p1 = buf;  p2 = p - 1;  while (p1 < p2)    @{      char tmp = *p1;      *p1 = *p2;      *p2 = tmp;      p1++;      p2--;    @}@}/* @r{Put the character C on the screen.} */static voidputchar (int c)@{  if (c == '\n' || c == '\r')    @{    newline:      xpos = 0;      ypos++;      if (ypos >= LINES)        ypos = 0;      return;    @}  *(video + (xpos + ypos * COLUMNS) * 2) = c & 0xFF;  *(video + (xpos + ypos * COLUMNS) * 2 + 1) = ATTRIBUTE;  xpos++;  if (xpos >= COLUMNS)    goto newline;@}/* @r{Format a string and print it on the screen, just like the libc   function printf.} */voidprintf (const char *format, ...)@{  char **arg = (char **) &format;  int c;  char buf[20];  arg++;    while ((c = *format++) != 0)    @{      if (c != '%')        putchar (c);      else        @{          char *p;                    c = *format++;          switch (c)            @{            case 'd':            case 'u':            case 'x':              itoa (buf, c, *((int *) arg++));              p = buf;              goto string;              break;            case 's':              p = *arg++;              if (! p)                p = "(null)";            string:              while (*p)                putchar (*p++);              break;            default:              putchar (*((int *) arg++));              break;            @}        @}    @}@}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国欧美国产一区| 91精品国产综合久久久久久 | 国产三级精品在线| 精品三级在线观看| 日韩网站在线看片你懂的| 欧美一区二区三区免费大片| 欧美男男青年gay1069videost| 欧美三片在线视频观看| 欧美日韩一区三区| 91精品国产欧美日韩| 欧美一区二区视频在线观看2020| 91精品蜜臀在线一区尤物| 日韩女同互慰一区二区| www久久久久| 日本一区二区不卡视频| 综合电影一区二区三区 | 一区二区三区成人| 五月天久久比比资源色| 日本系列欧美系列| 狠狠狠色丁香婷婷综合久久五月| 国产一本一道久久香蕉| 成人av资源在线观看| 一本一本久久a久久精品综合麻豆| 91欧美一区二区| 欧美精品丝袜中出| 26uuu久久综合| 国产精品美女久久久久aⅴ国产馆| 亚洲欧美在线高清| 视频一区二区欧美| 国产在线视频精品一区| 99热精品国产| 在线成人小视频| 久久久精品中文字幕麻豆发布| 中文字幕在线不卡一区二区三区| 一区二区三区视频在线观看| 奇米色777欧美一区二区| 国产激情偷乱视频一区二区三区| 91首页免费视频| 777精品伊人久久久久大香线蕉| 26uuu国产日韩综合| 国产精品国产自产拍高清av| 亚洲风情在线资源站| 国产在线精品免费av| 91蜜桃免费观看视频| 欧美一区二区在线看| 日本一区二区不卡视频| 午夜日韩在线观看| 成人免费精品视频| 欧美一区二区三区免费大片 | 欧美国产精品专区| 亚洲国产精品人人做人人爽| 国内精品免费在线观看| 色一情一伦一子一伦一区| 日韩欧美一二三四区| 亚洲欧洲美洲综合色网| 蜜桃av一区二区在线观看 | 国产精品久久福利| 日韩成人dvd| av电影在线不卡| 精品国产免费久久| 亚洲一区二区3| 中文字幕精品在线不卡| 亚洲a一区二区| 99久久99精品久久久久久| 日韩欧美国产午夜精品| 一区二区三区欧美激情| 国内精品在线播放| 欧美一级生活片| 亚洲国产日日夜夜| 成人av集中营| 久久先锋资源网| 热久久免费视频| 欧美日韩卡一卡二| 亚洲欧洲一区二区三区| 黄色小说综合网站| 欧美精品精品一区| 亚洲精品午夜久久久| 丁香另类激情小说| 精品福利一二区| 日韩成人免费电影| 欧美日韩一区 二区 三区 久久精品 | wwwwxxxxx欧美| 日韩成人午夜电影| 欧美日韩精品一区二区三区蜜桃 | 日本一道高清亚洲日美韩| 91麻豆国产自产在线观看| 国产清纯美女被跳蛋高潮一区二区久久w | 国产精品国产三级国产aⅴ原创| 国模无码大尺度一区二区三区| 777久久久精品| 天天综合日日夜夜精品| 欧美亚洲国产一区二区三区| 亚洲免费观看视频| 972aa.com艺术欧美| 国产精品久久久久一区二区三区共| 国产又黄又大久久| 欧美va亚洲va国产综合| 精品制服美女久久| 精品国产一区a| 国内欧美视频一区二区| 久久夜色精品一区| 国产一区二区不卡在线| 久久影院电视剧免费观看| 国内精品第一页| 久久老女人爱爱| 国产成人一级电影| 欧美激情中文字幕一区二区| 成人精品视频一区二区三区| 欧美国产97人人爽人人喊| 国产成人综合在线观看| 欧美韩日一区二区三区四区| 国产69精品一区二区亚洲孕妇| 国产日韩欧美制服另类| 白白色亚洲国产精品| 亚洲日本在线观看| 欧美色男人天堂| 另类欧美日韩国产在线| 国产亚洲欧美日韩日本| 国产成人高清在线| 国产精品电影一区二区| 欧洲一区二区三区在线| 国产福利91精品一区二区三区| 亚洲精品一区二区三区福利| 成人性生交大片免费看中文| 国产精品国产三级国产普通话蜜臀| 91麻豆国产精品久久| 亚洲国产一二三| 精品在线一区二区| 国产精品视频看| 欧美性生活大片视频| 日本欧美在线观看| 久久影视一区二区| 色婷婷av一区| 蜜乳av一区二区| 国产精品三级av| 欧美三级蜜桃2在线观看| 蜜桃免费网站一区二区三区| 国产欧美一区二区精品仙草咪| 一本色道久久综合狠狠躁的推荐| 日本伊人色综合网| 国产欧美日本一区二区三区| 91在线精品秘密一区二区| 天堂久久久久va久久久久| 久久久噜噜噜久久人人看| 一本久道久久综合中文字幕| 日本中文字幕一区| 国产精品久久久久国产精品日日| 欧美日韩在线亚洲一区蜜芽| 国产精品影视天天线| 一区二区三区自拍| 精品国产凹凸成av人网站| 91蜜桃婷婷狠狠久久综合9色| 日韩激情一二三区| 欧美激情自拍偷拍| 欧美一区二区视频免费观看| 成人福利视频在线| 麻豆91在线看| 亚洲欧美日韩综合aⅴ视频| 欧美成人官网二区| 欧美优质美女网站| 国产精品18久久久久久久久 | 欧美性一级生活| 国产乱子伦视频一区二区三区| 亚洲综合激情另类小说区| 久久久亚洲午夜电影| 欧美久久婷婷综合色| 成人黄色av电影| 麻豆91在线播放免费| 一区二区三区精品| 国产精品乱码一区二三区小蝌蚪| 欧美一区二区三区人| 91久久精品日日躁夜夜躁欧美| 国产精品夜夜嗨| 美腿丝袜亚洲色图| 亚洲成a人片在线不卡一二三区| 国产精品萝li| 久久久高清一区二区三区| 在线电影院国产精品| 91九色最新地址| 99精品国产一区二区三区不卡| 国产精品小仙女| 麻豆成人91精品二区三区| 婷婷综合久久一区二区三区| 亚洲黄色av一区| 亚洲色图欧洲色图| 国产精品丝袜久久久久久app| 精品美女一区二区三区| 欧美日韩的一区二区| 色天天综合色天天久久| a4yy欧美一区二区三区| 国产91在线|亚洲| 国产精品99精品久久免费| 久久国产麻豆精品| 日本在线不卡视频| 日本欧洲一区二区| 性感美女极品91精品| 午夜影院在线观看欧美| 亚洲一区在线观看视频| 亚洲欧美日本韩国| 亚洲精品免费视频|