自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(56)
  • 资源 (4)
  • 收藏
  • 关注

原创 《Essential Guide》读书笔记【4】 【第5章】

我试着翻译了第五章几段要紧的概念,算是用来加深理解吧。  先讨论下shading”翻译成什么?翻成“着色”,3D中的shading专指根据灯光对材质着色,普通的WireFrameMaterial也可以填充指定颜色,但这种“着色”不叫“shading”。看下百度百科:  Shading(着色处理)  绝大多数的3D物体是由多边形(polygon)所构成的,它们都必须经过某些着色处理的

2013-01-12 11:36:21 536

原创 debian进入桌面后显示空白

debian6安装结束进入桌面后,就一个空空的桌面,没有右键菜单,panel,home文件夹等。  我先是ctrl+alt+F1用tty1登陆进系统,重启gdm3,/etc/init.d/gdm3 restart,发现问题依旧。  于是重装gdm3,再执行/etc/init.d/gdm3 restart,问题解决。

2013-01-09 22:15:09 787

原创 debian安装vmware tools错误:Searching for a valid kernel header path... The path "" is not valid

Searching for a valid kernel header path...  The path "" is not valid.  What is the location of the directory of C header files that match your running kernel?  debian6的虚拟机安装会出现上面错误,网上方法试过了,到底没能

2013-01-09 22:08:58 1176

原创 《Essential Guide》读书笔记【3】【第4章】

1,什么是Mesh?它的由来?  书上解释说:A mesh is a collection of vertices made visible by a collection of elements that use those vertices. As a saving measure, vertices can be reused by multiple elements in a mesh

2013-01-02 20:19:47 550

原创 《Essentiall Guide》读书笔记 【2】【第3章】

1,留心flash原生对象的z属性  书上的话“From Flash 10 onward, native display objects have positions based in a 3D coordinate system but are missing automatic Z sorting. This means display objects placed far away on

2013-01-01 15:05:42 470

转载 浮点数的二进制表示【转载】

关于浮点数在计算机内部的存储机制,网上搜了不少文章,这篇是讲的最清晰的了...----------------------------------------------------------------------------------------------------------------1.前几天,我在读一本C语言教材,有一道例题:  #include

2012-12-03 15:54:12 356

原创 c输入函数细节

1,输入函数被调用后,它首先检查输入缓冲区内的字符数量是否已满足输入要求,若满足,则直接从缓冲区读入;若缓冲区内的字符数量不满足输入要求,则等待用户输入。通常输入完成的标志是用户输入回车\n,这时输入函数会重复之前的步骤——检查输入缓冲区的字符数量是否满足输入要求,若满足...若不满足... 看例子:#includevoid main(void){ int v1,v2; sc

2012-12-02 16:47:13 432

转载 linux进程状态浅析【转载】

众所周知,现在的分时操作系统能够在一个CPU上运行多个程序,让这些程序表面上看起来是在同时运行的。linux就是这样的一个操作系统。在linux系统中,每个被运行的程序实例对应一个或多个进程。linux内核需要对这些进程进行管理,以使它们在系统中“同时”运行。linux内核对进程的这种管理分两个方面:进程状态管理,和进程调度。本文主要介绍进程状态管理,进程调度见《linux进程调度浅析》。

2012-10-18 21:30:16 121

转载 linux c语言用intel语法反汇编【转载】

http://topic.csdn.net/u/20081206/00/ba2ac6fe-a3c6-4e40-829d-dc6472e5e3a7.html要用到objdump命令的相应参数:objdump -d -mi386:x86-64:intel ./t.so  就可以将当前目录下的t.so文件按intel语法反汇编了,下面是参数详细说明--------------

2012-10-13 12:11:22 759

原创 orange‘s学习日志

2012-10-10  *第5章学完了,真像作者说的,“喘口气了”。想到学习第三章时的痛苦,心里开阔了一些:第三章确实是个坎儿,我之前只学了王爽的80X86汇编,没接触过保护模式和80386工作机制,所以第三章劈头盖脸的就是选择子,段描述符,门描述符,gdt,idt,ldt,tss,特权级,堆栈切换等等,彻头彻尾的新知识,而我当时还没意识到(现在想起来这一点才是可怕的),没有心理准备,每天学的

2012-10-10 17:49:53 805

转载 linux不使用任务门【转载】

http://oss.org.cn/kernel-book/ch05/5.4.1.htmIntel的这种设计确实很周到,也为任务切换提供了一个非常简洁的机制。但是,由于i386的系统结构基本上是CISC的,通过JMP指令或CALL(或中断)完成任务的过程实际上是“复杂指令”的执行过程,其执行过程长达300多个CPU周期(一个POP指令占12个CPU周期),因此,Linux内核并不完全使用i

2012-10-10 10:04:30 471

原创 用nasm编译16位的elf文件

文档里说到nasm在输出elf目标文件时,具备16位段的扩展能力(众所周知elf只有32位和64位格式)。不知道官方这句话真的假的,反正目前我试过两种情形会失败:  情形1——16位实模式下,通过int 13h将软盘上的kernel.elf文件加载到80000h地址处,找到elf的入口地址,然后跳进去,结果代码执行错误,输入"u/10 entry"(entry是在调试时候慢慢算出来的)反汇编一

2012-10-06 15:30:45 515

转载 静态库

http://www.eefocus.com/article/09-11/85659s.html?clear=t有时候需要把一组代码编译成一个库,这个库在很多项目中都要用到,例如libc就是这样一个库,我们在不同的程序中都会用到libc中的库函数(例如printf),也会用到libc中的变量(例如以后要讲到的environ变量)。本节介绍怎么创建这样一个库。我们继续用stack.c的例

2012-10-02 18:38:57 377

转载 void*指针的由来

【转载】http://blog.csdn.net/mhjcumt/article/details/7355127int a=1;int *p = &a;float *p1 = (float*)p;则p和p1的值都是&a,但是*p是将&a地址中的值按照int型变量进行解释,而*p1则是将&a地址中的值按照float型变量进行解释。鉴于指针之

2012-10-01 08:23:04 473

转载 ELF(Executable and Linking Format)

http://hi.baidu.com/zengzhaonong/item/32b06adfecdb774edcf9be78【来源】    现代Linux采用ELF(Executable and Linking Format)做为其可连接和可执行文件的格式,因此ELF格式也向我们透出了一点Linux核内的情景,就像戏台维幕留下的一条未拉严的缝。 PC世界32仍是主流,但64位的脚步却已如此

2012-09-30 20:20:33 570

转载 Linux下的ELF文件格式简介

发布时间:2002.01.26 12:20     来源:开放系统世界    作者:杜昆1. 概述Executable and linking format(ELF)文件是x86 Linux系统下的一种常用目标文件(object file)格式,有三种主要类型:(1)适于连接的可重定位文件(relocatable file),可与其它目标文件一起创建可执行文件和共享目标文件。(

2012-09-30 14:34:05 613

原创 通过中断门或陷阱门的转移——【只上传好图一张】

上述的流程,全部硬件机制实现的。这张图十分好。

2012-09-28 09:19:12 610

原创 orange's习题——第三章【中断和异常】

一,简答题1,说说80386下“中断”和“异常”的概念?答案:对80386而言,中断是由异步的外部事件引起的,与正在执行的指令没有关系。异常则是由指令执行期间检测到的不正常或非法的条件引起的,它与正在执行的指令有直接关系。软中断指令“int n”和“into”也归于异常,这是因为执行这些指令产生异常事件。2,说说你对Fault,Trap,Abort的理解。答案:这三者是根据

2012-09-27 18:38:50 389

原创 orange's习题——第三章【中断和异常】】

一,简答题1,说说80386下“中断”和“异常”的概念?答案:对80386而言,中断是由异步的外部事件引起的,与正在执行的指令没有关系。异常则是由指令执行期间检测到的不正常或非法的条件引起的,它与正在执行的指令有直接关系。软中断指令“int n”和“into”也归于异常,这是因为执行这些指令产生异常事件。二,填空题1,处理器不屏蔽来自_____的中断请求,和8086

2012-09-27 15:32:03 221

转载 揭开硬件中断请求IRQ所有秘密(图解)

实用:揭开硬件中断请求IRQ所有秘密(图解)http://www.sina.com.cn 2004年05月17日 09:31 赛迪网--中国电脑教育报   文/蔡远翔  IRQ(Interrupt Request)的作用就是在我们所用的电脑中,执行硬件中断请求的动作,用来停止其相关硬件的工作状态。比如我们要打印一份文件,在打印结束

2012-09-27 15:16:34 855

转载 8259A编程

一个外部中断请求信号通过中断请求线IRQ,传输到IMR(中断屏蔽寄存器),IMR根据所设定的中断屏蔽字(OCW1),决定是将其丢弃还是接受。如果可以接受,则8259A将IRR(中断请求暂存寄存器)中代表此IRQ的位置位,以表示此IRQ有中断请求信号,并同时向CPU的INTR(中断请求)管脚发送一个信号,但CPU这时可能正在执行一条指令,因此CPU不会立即响应,而当这CPU正忙着执行某条指令时,还有

2012-09-27 15:05:22 452

转载 printf输出格式

来自:点击打开链接printf输出格式 收藏  格式代码                 A                ABC                ABCDEFGH %S                        A                ABC               ABCDEFGH %5S              ####A

2012-09-26 18:46:44 443

原创 printf使用变量作为输出精度

例如:  int n=2;  int i=1.123;  printf("%.*f",n,i);  *号的位置会由n来填充。  输出结果就是1.12  据我测试,fscanf不支持变量精度的。

2012-09-26 18:26:25 424

原创 orange's习题——分段机制【第3章】

一,简答题1,全局描述符表中每个表项需要按照8字节对齐吗?答案:不需要二,填空题1,描述符的TYPE字段占_____个bit。其中的位_____指示描述符是否被访问过,用符号_____标记。位_____指示所描述的段是代码段还是数据段,用符号E标记,指示所描述的段是否可执行。当E=_____,TYPE中的位_____指示所描述的数据段是否可写,用W标记。TYPE中的位2

2012-09-24 15:10:41 696

原创 orange's习题——分页机制【第3章】

一,简答题1,什么是虚拟存储器?答案:虚拟存储器是一种软硬件结合的技术,用于提供比在计算机中实际可用的物理存储器大得多的存储器空间。这样,程序员在编写程序时,不用考虑物理存储器的实际容量。2,为什么说80386支持的虚拟地址空间达64TB?答案:虚拟地址空间由GDT 映射的全局地址空间和由LDT映射的局部地址空间组成。选择符的索引部分由13 个比特位表示,加上区分GDT 和LDT

2012-09-08 19:43:31 377

转载 虚拟地址空间达64TB是怎么算来的

搜了好多帖子,还是这篇说的有道理:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1959427&page=5虚拟地址空间由GDT 映射的全局地址空间和由LDT映射的局部地址空间组成。选择符的索引部分由13 个比特位表示,加上区分GDT 和LDT 的1 个比特位;因此Intel 80X86 CPU 共可以索引16384

2012-09-08 14:51:03 1394

原创 ret向外层返回

1,ret指令先从堆栈弹出返回地址指针(48位的selector:offset)        若selector的RPL等于当前的CPL,则直接开始向目标代码段转移的步骤,即执行jmp selector:offset        若selector的RPL大于当前的CPL,则引起向外层返回。CPL的变化也必然对应着堆栈切换。  2,内层堆栈弹掉先前堆栈切换时复制进来的参数,再弹

2012-09-01 21:41:50 341

原创 进入内层时的堆栈切换

1,根据TSS,建立同切换后CPL相对应的内层堆栈。  2,将外层堆栈指针ss,esp依次压入内层堆栈。  3,从外层堆栈复制dcount个参数到内层堆栈。  4,将当前的cs,eip压入内层堆栈。 (实际上到这里已经完成了堆栈切换的相关工作)  5,加载调用门中指定的selector:offset到cs:eip,目标代码段开始执行。

2012-09-01 21:32:26 318

原创 我对jmp selector:offset模型的理解

jmp selector:offset,其中的selector可能指示段描述符或门描述符,cpu执行该指令的流程应该是这样:    以上就是我对jmp selector:offset执行过程的理解,其实call selector:offset类似,仅仅是首尾多了cs,eip的堆栈,出栈。  (图示的箭头画的有些扎眼,希望没影响到你心情,我也没办法,flash cs里做的图,它又

2012-09-01 15:57:13 583

原创 我对call gate的理解

call gate(调用门)提供一种机制,允许通过call指令实现向更高级非一致代码段的跳转,同时cpl发生相应跃迁。    所以说call gate是call指令的专用门。猜测call gate之名定取the gate for call是也。  对上面两点作下解释:  “允许通过call指令实现向更高级非一致代码段的跳转”,为什么是非一致代码段?我们知道,若目标段是一致代

2012-08-31 17:20:49 459

转载 nasm报错:operator may only be applied to scalar values

搜到了一篇不错的帖子:  (回答的那个人实在是太敬业了)Hey all.I'm a complete beginner in assembly and have chosen NASM to work my way up with. But I have a problem with the pseudo-instruction set. More precisel

2012-08-25 23:16:11 744

原创 保护模式下寻址

保护模式下寻址,使用“段选择子+段偏移”  在pmtest1.asm中有句:jmp secletorCode32:0      这就是直接使用“段选择子+段偏移”寻址  还有一种: mov ax,selectorCode32               mov gs,ax               mov edi,(80*11+79)*2

2012-08-25 19:53:40 377

原创 先熟悉nasm 【4】 ——SECTION和标签

1,nasm下,自定义段默认按4byte对齐。  手册上说,“ 通过在段定义行的后面加上'ALIGN'限定符实现的。比如:section .data align=16 它切换到段'.data',并指定它必须对齐到 16 字节边界。”    我也在自定义段里加上align 16,发现编译生成的代码仍按照4byte对齐。很诡异。  2,再说标签。  看下面一段代码(可正常运行),它

2012-08-25 17:35:58 1151

原创 org是做什么的

于渊前辈有这么一句注释:------------------------------------------------------ org07c00h     ;告诉编译器加载到7c00h处------------------------------------------------------ 到了第三章,编译com文件时,要把07c00h改成0100h。如果按照之前

2012-08-19 12:16:01 477

原创 com文件与bin文件是很相似的

我觉得com文件只比bin文件多了个标签:org 0100h,告诉你此文件dos专用。  两者都是可执行程序的内存映象文件:所谓映像,就是说把硬盘上的bin文件或com文件加载回内存中,再设置cs:ip指向文件的第一条指令,cpu就可以顺利的跑起来。   它们仅具备程序基本的要素:指令和数据。  dos执行com文件时,会先创建一个256byte的psp内存空间(用于和com程

2012-08-19 12:08:58 435

转载 DOS下COM文件和EXE文件的比较

【来源】http://www.cnsharenet.com/DOS/f/dft/dexecom.htm    COM文件是一种可执行程序的内存映象文件,它与只有16位地址线的8位机上的CP/M操作系统下的可执行程序结构相似。在COM程序执行过程中,除了调用DOS功能和 ROM BIOS功能,以及用户特意安排外,段寄存器一般不发生变化。四个段寄存器具有同样的内容,都指向PSP,因此程序的大小仍限

2012-08-19 12:01:39 536

原创 关于tink的碰撞检测类【2】

分析算法的思路: Step1:假设stage(黑色)上有4个显示对象red_mc,green_mc,blue_mc,yellow_mc,层级关系是stage>root>red_mc,stage>root>yellow_mc>blue_mc>green_mc。要检测碰撞的对象是red_mc和green_mc。如图

2012-08-19 11:50:52 479

原创 先熟悉nasm 【3】

nasm下,向内存写数据可以这样:  mov  byte [0200h],64h  上面代码是可以通过编译的,反汇编得到:mov byte ptr ds:0x200, 0x64  我记得在masm下,偏移寻址是必须要用寄存器。  我试着写“mov byte [0x0000:0x0200],64h”,nasm就报错了,看来段寄存器还是少不了的。不过可以用立即数寻址,已经很满足了!

2012-08-19 01:35:30 995

原创 先熟悉nasm 【1】

注:应该是新浪博客的一个bug:“define”前面加%是显示乱码的,只能把%用100代替,因此下文看到100define时不要被吓到。----------------------------------------------------------------------------------------------------------------------------------

2012-08-16 16:00:55 1179

原创 先熟悉nasm 【2】

在网上溜达时看到一个不错的问答,问题难度不大,但回答的很精准:-----------懂nasm的进,请问nasm程序的入口是什么 我怎么输入程序呢???------解决方案--------------------------------------------------------NASM和MASM有很大的不同。在MASM中,要先定义段和程序入口点。过程调用还要显式的

2012-08-16 16:00:55 1133

mw测试版本

用来支持c语言的结构体遍历 仅供测试用

2013-06-01

博客文章附件

一个obj格式的3D足球文件,可以作为3d编程的解析测试文件用。

2013-01-04

strufunc工具包

写了一个工具包(叫strufunc),用以在c语言下使用"::"和"=>"(指针访问形式,下文只提::)。

2014-04-03

strufunc源码及demo

写了一个工具包(叫strufunc),用以在c语言下使用"::"和"=>"(指针访问形式,下文只提::)。

2014-04-02

空空如也

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

TA关注的人

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