摘要: 在上节的代码中,构造函数AccT()不一定会返回一个符合条件的值,而且类型AccT也不一定具有一个缺省的构造函数。我们可以再次使用trait来解决这个函数。//accumtraits3.htemplate<typename T>class AccumulationTraits;template<>class AccumulationTraits<char>{public: typedef int AccT; static AccT const zero = 0;};template<>class AccumulationTraits<sho 阅读全文
posted @ 2011-11-02 22:48 MagiCube 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 要求:编写一个能适合许多类型的模板来完成一个累加操作解答1://定义一个模板函数#ifndef ACCUM_H#define ACCUM_Htemplate<typename T>inlineT accum(T const* beg,T const* end){ T total=T();//假设T()事实上会产生一个等于0的值 while(beg != end) { total += *beg; ++beg; } return total;}#endif解析:上面的代码,有两个问题:(1)如何正确生成一个0值,以便开展我们的求和过程。(... 阅读全文
posted @ 2011-11-02 00:29 MagiCube 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 1. cli 在asm汇编中表示将处理器标志寄存器的中断标志位清0,不允许中断2. 汇编 eax寄存器和AX,AH,AL之间的关系00000000 00000000 00000000 00000000|===============EAX===============|--32个0,4个字节,2个字,1个双字 |======AX=======|--16个0,2个字节,1个字 |==AH===|-----------8个0,1个字节 |===AL==|---8个0,1个字节 AH是AX的高8位,AL是AX的低8位,AX是EAX的低16位3. in al,92h 表示从92h号端口读入一个字节 o 阅读全文
posted @ 2011-11-01 22:45 MagiCube 阅读(8768) 评论(1) 推荐(2) 编辑
摘要: 一个程序本质上都是由bss段、data段、text段三个组成的。这样的概念,不知道最初来源于哪里的规定,但 在当前的计算机程序设计中是很重要的一个基本概念。而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配,存储单元占用空间大小的 问题。 在采用段式内存管理的架构中(比如intel的80x86系统),bss段(Block Started by Symbol segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域,一般在初始化时bss 段部分将会清零。bss段属于静态内存分配,即程序一开始就将其清零了。 比如,在C语言之类的程序编译完成之后,已初始化的全局变 阅读全文
posted @ 2011-10-25 20:51 MagiCube 阅读(4380) 评论(0) 推荐(0) 编辑
摘要: 两段代码://global.c#define GLOBAL_VARIABLES_HERE#include "type.h"#include "const.h"#include "protect.h"#include "global.h"//global.h# ifdef GLOBAL_VARIABLES_HERE# undef EXTERN# define EXTERN# endifEXTERN int disp_pos;EXTERN t_8 gdt_ptr[6]; // 0~15:Limit 16~47:Bas. 阅读全文
posted @ 2011-10-25 20:26 MagiCube 阅读(1056) 评论(0) 推荐(0) 编辑
摘要: JMP、CALL和RET指令的近转移形式只是在当前代码段中执行程序控制转移,因此不会执行特权级检查。JMP、CALL或RET指令的远转移形式会把控制转移到另外一个代码段中,因此处理器一定会执行特权级检查。1、jmp指令紧紧进行执行流程的跳转,不会保存返回地址2、call指令在进行流程跳转前会保存返回地址,以便在跳转目标代码中可以使用ret指令返回到call指令的下一条指令处继续执行。执行段内跳转时,只保存EIP;如果是段间跳转,还保存CS。3、ret和retf:这两个指令的功能都是调用返回。 (1)ret在返回时只从堆栈中取得EIP;retf中的字母f表示far,即段间转移返回,要从堆栈中.. 阅读全文
posted @ 2011-10-22 17:53 MagiCube 阅读(3507) 评论(0) 推荐(0) 编辑
摘要: INT 10H 是由 BIOS 对屏幕及显示器所提供的服务程序,而后倚天公司针对倚天中文提供了许多服务程序,这些服务程序也加挂在 INT 10H 内。使用 INT 10H 中断服务程序时,先指定 AH 寄存器为下表编号其中之一,该编号表示欲调用的功用,而其他寄存器的详细说明,参考表后文字,当一切设定好之后再调用 INT 10H。底下是它们的说明:AH功 能调用参数返回参数 / 注释1 置光标类型 (CH)0―3 = 光标开始行 (CL)0―3 = 光标结束行2 置光标位置 BH = 页号 DH = 行 DL = 列 3 读光标位置 BH = 页号 CH = 光标开始行 ... 阅读全文
posted @ 2011-10-19 14:59 MagiCube 阅读(43804) 评论(0) 推荐(1) 编辑
摘要: 转自:http://blog.csdn.net/zhuichao001/article/details/5618206段寄存器存放 基地址AX 通用寄存器CS 存放要被cpu执行的代码的基地址 code segmentIP 别名为指令指针寄存器,存放段地址的偏移地址CS*16+IP 就是cpu要执行的指令debug是dos、windows都提供的实模式程序调试工具,可以查看cpu各种寄存器中的内容和机器码级跟踪程序的运行r命令用来查看和改变各个寄存器内容,d命令查看内存中的内容,u命令将内存机器码转为汇编指令,a命令以汇编指令格式在内存写入指令t命令但不跟踪数据段:全局变量代码段:代码堆栈段: 阅读全文
posted @ 2011-10-19 14:40 MagiCube 阅读(12907) 评论(0) 推荐(1) 编辑
摘要: javascript 参数是string类型的时候前后要加“”,有些情况下一定要加转义符:例如下面情况:这是在servlet中的写法,因为用的ajax提交,所以使用PrintWriter对象输出内容String ptostr = "aaaaaaaaaaaaa";out.println("<span id='"+value+"' onclick='showContent(\""+ptostr+"\")'><img src='images/file3. 阅读全文
posted @ 2011-08-19 10:56 MagiCube 阅读(708) 评论(0) 推荐(0) 编辑
摘要: Google Maps in jQuery UIDialogJust a quick fix type of post that hopefully someone finds in their googling. If you are attempting to use a google map (either v2 or v3) in your page, and want it inside a jQuery UI dialog box, you will likely run into a strange behavior where half the map is grey. You 阅读全文
posted @ 2011-08-18 10:06 MagiCube 阅读(788) 评论(0) 推荐(0) 编辑