- 博客(56)
- 资源 (4)
- 收藏
- 关注
原创 《Essential Guide》读书笔记【4】 【第5章】
我试着翻译了第五章几段要紧的概念,算是用来加深理解吧。 先讨论下shading”翻译成什么?翻成“着色”,3D中的shading专指根据灯光对材质着色,普通的WireFrameMaterial也可以填充指定颜色,但这种“着色”不叫“shading”。看下百度百科: Shading(着色处理) 绝大多数的3D物体是由多边形(polygon)所构成的,它们都必须经过某些着色处理的
2013-01-12 11:36:21 473
原创 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 633
原创 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 1121
原创 《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 498
原创 《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 408
转载 浮点数的二进制表示【转载】
关于浮点数在计算机内部的存储机制,网上搜了不少文章,这篇是讲的最清晰的了...----------------------------------------------------------------------------------------------------------------1.前几天,我在读一本C语言教材,有一道例题: #include
2012-12-03 15:54:12 309
原创 c输入函数细节
1,输入函数被调用后,它首先检查输入缓冲区内的字符数量是否已满足输入要求,若满足,则直接从缓冲区读入;若缓冲区内的字符数量不满足输入要求,则等待用户输入。通常输入完成的标志是用户输入回车\n,这时输入函数会重复之前的步骤——检查输入缓冲区的字符数量是否满足输入要求,若满足...若不满足... 看例子:#includevoid main(void){ int v1,v2; sc
2012-12-02 16:47:13 381
转载 linux进程状态浅析【转载】
众所周知,现在的分时操作系统能够在一个CPU上运行多个程序,让这些程序表面上看起来是在同时运行的。linux就是这样的一个操作系统。在linux系统中,每个被运行的程序实例对应一个或多个进程。linux内核需要对这些进程进行管理,以使它们在系统中“同时”运行。linux内核对进程的这种管理分两个方面:进程状态管理,和进程调度。本文主要介绍进程状态管理,进程调度见《linux进程调度浅析》。
2012-10-18 21:30:16 63
转载 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 706
原创 orange‘s学习日志
2012-10-10 *第5章学完了,真像作者说的,“喘口气了”。想到学习第三章时的痛苦,心里开阔了一些:第三章确实是个坎儿,我之前只学了王爽的80X86汇编,没接触过保护模式和80386工作机制,所以第三章劈头盖脸的就是选择子,段描述符,门描述符,gdt,idt,ldt,tss,特权级,堆栈切换等等,彻头彻尾的新知识,而我当时还没意识到(现在想起来这一点才是可怕的),没有心理准备,每天学的
2012-10-10 17:49:53 762
转载 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 413
原创 用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 440
转载 静态库
http://www.eefocus.com/article/09-11/85659s.html?clear=t有时候需要把一组代码编译成一个库,这个库在很多项目中都要用到,例如libc就是这样一个库,我们在不同的程序中都会用到libc中的库函数(例如printf),也会用到libc中的变量(例如以后要讲到的environ变量)。本节介绍怎么创建这样一个库。我们继续用stack.c的例
2012-10-02 18:38:57 331
转载 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 426
转载 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 521
转载 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 540
原创 orange's习题——第三章【中断和异常】
一,简答题1,说说80386下“中断”和“异常”的概念?答案:对80386而言,中断是由异步的外部事件引起的,与正在执行的指令没有关系。异常则是由指令执行期间检测到的不正常或非法的条件引起的,它与正在执行的指令有直接关系。软中断指令“int n”和“into”也归于异常,这是因为执行这些指令产生异常事件。2,说说你对Fault,Trap,Abort的理解。答案:这三者是根据
2012-09-27 18:38:50 338
原创 orange's习题——第三章【中断和异常】】
一,简答题1,说说80386下“中断”和“异常”的概念?答案:对80386而言,中断是由异步的外部事件引起的,与正在执行的指令没有关系。异常则是由指令执行期间检测到的不正常或非法的条件引起的,它与正在执行的指令有直接关系。软中断指令“int n”和“into”也归于异常,这是因为执行这些指令产生异常事件。二,填空题1,处理器不屏蔽来自_____的中断请求,和8086
2012-09-27 15:32:03 162
转载 揭开硬件中断请求IRQ所有秘密(图解)
实用:揭开硬件中断请求IRQ所有秘密(图解)http://www.sina.com.cn 2004年05月17日 09:31 赛迪网--中国电脑教育报 文/蔡远翔 IRQ(Interrupt Request)的作用就是在我们所用的电脑中,执行硬件中断请求的动作,用来停止其相关硬件的工作状态。比如我们要打印一份文件,在打印结束
2012-09-27 15:16:34 785
转载 8259A编程
一个外部中断请求信号通过中断请求线IRQ,传输到IMR(中断屏蔽寄存器),IMR根据所设定的中断屏蔽字(OCW1),决定是将其丢弃还是接受。如果可以接受,则8259A将IRR(中断请求暂存寄存器)中代表此IRQ的位置位,以表示此IRQ有中断请求信号,并同时向CPU的INTR(中断请求)管脚发送一个信号,但CPU这时可能正在执行一条指令,因此CPU不会立即响应,而当这CPU正忙着执行某条指令时,还有
2012-09-27 15:05:22 402
转载 printf输出格式
来自:点击打开链接printf输出格式 收藏 格式代码 A ABC ABCDEFGH %S A ABC ABCDEFGH %5S ####A
2012-09-26 18:46:44 404
原创 printf使用变量作为输出精度
例如: int n=2; int i=1.123; printf("%.*f",n,i); *号的位置会由n来填充。 输出结果就是1.12 据我测试,fscanf不支持变量精度的。
2012-09-26 18:26:25 378
原创 orange's习题——分段机制【第3章】
一,简答题1,全局描述符表中每个表项需要按照8字节对齐吗?答案:不需要二,填空题1,描述符的TYPE字段占_____个bit。其中的位_____指示描述符是否被访问过,用符号_____标记。位_____指示所描述的段是代码段还是数据段,用符号E标记,指示所描述的段是否可执行。当E=_____,TYPE中的位_____指示所描述的数据段是否可写,用W标记。TYPE中的位2
2012-09-24 15:10:41 653
原创 orange's习题——分页机制【第3章】
一,简答题1,什么是虚拟存储器?答案:虚拟存储器是一种软硬件结合的技术,用于提供比在计算机中实际可用的物理存储器大得多的存储器空间。这样,程序员在编写程序时,不用考虑物理存储器的实际容量。2,为什么说80386支持的虚拟地址空间达64TB?答案:虚拟地址空间由GDT 映射的全局地址空间和由LDT映射的局部地址空间组成。选择符的索引部分由13 个比特位表示,加上区分GDT 和LDT
2012-09-08 19:43:31 336
转载 虚拟地址空间达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 1308
原创 ret向外层返回
1,ret指令先从堆栈弹出返回地址指针(48位的selector:offset) 若selector的RPL等于当前的CPL,则直接开始向目标代码段转移的步骤,即执行jmp selector:offset 若selector的RPL大于当前的CPL,则引起向外层返回。CPL的变化也必然对应着堆栈切换。 2,内层堆栈弹掉先前堆栈切换时复制进来的参数,再弹
2012-09-01 21:41:50 289
原创 进入内层时的堆栈切换
1,根据TSS,建立同切换后CPL相对应的内层堆栈。 2,将外层堆栈指针ss,esp依次压入内层堆栈。 3,从外层堆栈复制dcount个参数到内层堆栈。 4,将当前的cs,eip压入内层堆栈。 (实际上到这里已经完成了堆栈切换的相关工作) 5,加载调用门中指定的selector:offset到cs:eip,目标代码段开始执行。
2012-09-01 21:32:26 274
原创 我对jmp selector:offset模型的理解
jmp selector:offset,其中的selector可能指示段描述符或门描述符,cpu执行该指令的流程应该是这样: 以上就是我对jmp selector:offset执行过程的理解,其实call selector:offset类似,仅仅是首尾多了cs,eip的堆栈,出栈。 (图示的箭头画的有些扎眼,希望没影响到你心情,我也没办法,flash cs里做的图,它又
2012-09-01 15:57:13 538
原创 我对call gate的理解
call gate(调用门)提供一种机制,允许通过call指令实现向更高级非一致代码段的跳转,同时cpl发生相应跃迁。 所以说call gate是call指令的专用门。猜测call gate之名定取the gate for call是也。 对上面两点作下解释: “允许通过call指令实现向更高级非一致代码段的跳转”,为什么是非一致代码段?我们知道,若目标段是一致代
2012-08-31 17:20:49 390
转载 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 662
原创 保护模式下寻址
保护模式下寻址,使用“段选择子+段偏移” 在pmtest1.asm中有句:jmp secletorCode32:0 这就是直接使用“段选择子+段偏移”寻址 还有一种: mov ax,selectorCode32 mov gs,ax mov edi,(80*11+79)*2
2012-08-25 19:53:40 289
原创 先熟悉nasm 【4】 ——SECTION和标签
1,nasm下,自定义段默认按4byte对齐。 手册上说,“ 通过在段定义行的后面加上'ALIGN'限定符实现的。比如:section .data align=16 它切换到段'.data',并指定它必须对齐到 16 字节边界。” 我也在自定义段里加上align 16,发现编译生成的代码仍按照4byte对齐。很诡异。 2,再说标签。 看下面一段代码(可正常运行),它
2012-08-25 17:35:58 1095
原创 org是做什么的
于渊前辈有这么一句注释:------------------------------------------------------ org07c00h ;告诉编译器加载到7c00h处------------------------------------------------------ 到了第三章,编译com文件时,要把07c00h改成0100h。如果按照之前
2012-08-19 12:16:01 408
原创 com文件与bin文件是很相似的
我觉得com文件只比bin文件多了个标签:org 0100h,告诉你此文件dos专用。 两者都是可执行程序的内存映象文件:所谓映像,就是说把硬盘上的bin文件或com文件加载回内存中,再设置cs:ip指向文件的第一条指令,cpu就可以顺利的跑起来。 它们仅具备程序基本的要素:指令和数据。 dos执行com文件时,会先创建一个256byte的psp内存空间(用于和com程
2012-08-19 12:08:58 382
转载 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 443
原创 关于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 443
原创 先熟悉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 948
原创 先熟悉nasm 【1】
注:应该是新浪博客的一个bug:“define”前面加%是显示乱码的,只能把%用100代替,因此下文看到100define时不要被吓到。----------------------------------------------------------------------------------------------------------------------------------
2012-08-16 16:00:55 1124
原创 先熟悉nasm 【2】
在网上溜达时看到一个不错的问答,问题难度不大,但回答的很精准:-----------懂nasm的进,请问nasm程序的入口是什么 我怎么输入程序呢???------解决方案--------------------------------------------------------NASM和MASM有很大的不同。在MASM中,要先定义段和程序入口点。过程调用还要显式的
2012-08-16 16:00:55 1084
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人