自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 C语言中auto register static const volatile

1)auto  这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。 (2)register  这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。 (3)static  常见的两种用途:    1>统计函数被调用的次数;    2>减少局部数组建立和赋值的开销.变量的建立和赋值是需要一定的处理器开销的,特别是数组等含有较多元素的存

2011-04-25 23:43:00 699

原创 为什么开机时间(秒)要从1970年1月1日0时开始计算

<br />最初计算机操作系统是32位,而时间也是用32位表示。<br /><br />(Integer.MAX_VALUE);<br />2147483647<br /><br /><br /><br />Integer用32位表示,因此32位能表示的最大值是2147483647。另外1年365天的总秒数是31536000,<br /><br />2147483647/31536000 = 68.1<br /><br />也就是说32位能表示的最长时间是68年,而实际上到2038年01月19日03时14分

2011-04-18 01:28:00 5727

转载 『转载』__asm__ __volatile__ GCC的内嵌汇编语法 AT&amp;T汇编语言语法

<br />__asm__ __volatile__ GCC的内嵌汇编语法 AT&T汇编语言语法<br />这篇帖子由于没署作者名,所以我转的时候也没怎么署,但还是谢谢了。<br />AT&T ASM Syntax<br />1 Overview <br />开发一个OS,尽管绝大部分代码只需要用C/C++等高级语言就可以了,但至少和硬件相关部分的代码需要使用汇编语言,另外,由于启动部分的代码有大小限制,使用精练的汇编可以缩小目标代码的Size。另外,对于某些需要被经常调用的代码,使用汇编来写可以提高性能。

2011-04-17 21:52:00 8094 2

原创 __asm__ volatile 之 C语言嵌入式汇编

在linux/include/unistd.h中定义的系统调用嵌入汇编宏函数_syscall0。其实展开不难发现就是一个函数,只不过用宏定义了。其中关键的是怎么理解 __asm__ volatile这个语法。对于__asm__ volatile这个固定形式,我们暂且不理会它,关键看懂()里面的含义。以下面这个为例子先简要介绍一下这个用法。插入C语言的一个汇编语言代码片段可以分成4部分,以“:”号加以分隔,其一般形式为:指令部:输出部:输入部:损坏部static __inline__ void atomic_

2011-04-17 15:55:00 27489

原创 读head.S

<br />引自《linux内核0.11完全注释》<br />非常感谢赵老师,注释的很详细,我边看边写,基本1 2遍就能懂!<br /> <br />/* head.s 2011-04-12<br /> * 注意: 本程序是采用AT&T的汇编格式,需要使用GUN的gas和gld2进行编译链接<br /> * 注意代码的赋值方向是从左到右<br /> * head.s含有32位启动码。<br /> * 注意32位的启动码是从绝对地址0x00000000开始,这里同样也是页目录存放的地方<br />   因此启

2011-04-13 23:34:00 1414

原创 fninit fstsw指令

<br />读head.S的时候,遇到这几个指令,google一下,解析如下:<br /> <br />引自:http://www.oldlinux.org/oldlinux/viewthread.php?tid=5829<br />这两条是有关这是80X87数学协处理器指令。<br />finit 向协处理器发出初始化命令,它会把协处理器置于一个未受以前操作影响的已知状态,设置其控制字为默认值、清除状态字和所有浮点栈式寄存器。非等待形式的这条指令(fninit)还会让协处理器终止执行当前正在执行的任何先前

2011-04-13 23:31:00 5637

转载 lea指令!

<br />最近在看linux-0.11内核,看到lea这个指令,google搜索了一下,转给大家,一起学习@!<br /> <br />先看这个这个语法格式吧:<br />对AT&T来说,寻址方式比较怪异,但又非常简洁,语法格式如下:segreg:base_address(offset_address, index,size) ;例子movl %eax, label1(, $2, $4)movl %ebx,(label2, $2,)movl %ecx,(%esp)<br />其效果为

2011-04-12 22:20:00 21767

转载 什么是 A20

Unix 的 boot loader 里,在最开始部分有段代码是用来打开 A20 的。什么是 A20 呢?为什么不让它默认为打开,而是每次系统启动时都要打开它呢?原来这个是计算机的历史遗留问题。在 8088 的时候,计算机只有 20 条地址线,所以只能寻址 1 MB 的范围。PC 通常用两个 16 位寄存器寻址,一个存 selector,一个存 offset,即 selector:offset,计算得到的地址就是 selector*16+offset。这样,最大的地址就是 FFFF:FFFF,即 0x10F

2011-04-12 00:53:00 2739

原创 读setup.s

原文出处 《linux内核0.11完全注释》! bootsect.s 2011-04-10! setup.s负责从BIOS中获取系统数据,并将这些数据放到系统内存的适当位置。! 此时setup.s和system已经由bootsect引导加载到内存中! 这段代码询问bios有关内存/磁盘/其他参数,并将这些参数放到一个"安全的"地方:! 0x90000-0x901FF, 也即原来bootsect代码块曾经在的地方,然后在被缓冲块覆盖掉之前! 由保护模式的system读取INITSEG = 0x9000SYSS

2011-04-12 00:40:00 1207

原创 读bootsect.s

<br />原文出处 linux内核0.11完全注释。重写一遍!!<br /> <br />! bootsect.s 2011-04-06<br />! 处理基本步骤:<br />! 1. bootsect.s 被BIOS-启动子程序加载至0x7c00(31k)处,并将自己<br />! 移到了地址0x90000(576k)处,并跳转至那里;<br />! <br />! 2. 使用BIOS中断将setup直接加载到自己的后面(0x90200)(576.5k),<br />! 并将system加载至地址0x

2011-04-11 00:08:00 1040

转载 seg cs是什么意思,看看这里就知道了!

<br />【转帖】<br />先讲一下寄存器的默认组合问题,比如指令mov   [si],   ax表示将ax中的内容存入ds:si指向的内存单元,也就是说在寄存器间接寻址的情况下,以si间接寻址时总是默认以ds为相应的段地址寄存器。同样di是以es为默认的段地址寄存器。 <br />第二个要了解的是“段超越”的问题,就是在某些时候你不想使用默认的段地址寄存器,那 <br />么你可以强制指定一个段地址寄存器(当然这种强制是在允许的情况下,建议看一下汇编 <br />教材上的说明),同上例mov   [s

2011-04-07 21:44:00 5096

原创 常用中断(转)

常用中断<br />以下为原文地址:<br />中断大全<br />了解哪些某某中断某某功能号是干什么用的,碰到时供查询用<br />中断大全:<br />http://www.oldlinux.org/Linux.ol ... ts/int-html/int.htm<br />常用中断:<br />http://www.cnblogs.com/huqingyu/archive/2005/02/19/105926.html<br /> INTAH功能调用参数返回参数10 <br /><br /><br />

2011-04-06 21:40:00 1024

原创 好久没来了~~

<br />今天一看都半年没来了,今天开始继续,加油!!!!学习linux~~坚持!!

2011-04-03 15:20:00 466

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除