08 2014 档案

摘要:A 声明从它的名字开始读取,然后按照优先级顺序依次读取。 B 优先级从高到低依次是: B.1 声明中被括号括起来的那部分 B.2 后缀操作符: 括号()表示这是一个函数,而 方括号[]表示这是一个数组。 B.3 前缀操作符:星号*表示 “指向…的指针”。 C 如果const和(或)volatile关键字的后面紧跟类型说明符(如int,... 阅读全文
posted @ 2014-08-19 20:37 ITtecman 阅读(345) 评论(0) 推荐(0) 编辑
摘要:基本的内联汇编代码: asm格式: asm(“assembly code”); 使用替换的关键字: 如果必须的话,可以改变用于标识内联汇编代码段的关键字asm。ANSI C规范把关键字asm用于其他用途,不能将它用于内联汇编语句。如果使用ANSI C约定编写代码,你必须使用关键字__asm__替换一般的关键字asm。 __asm__(“assembly code”); 阅读全文
posted @ 2014-08-15 19:49 ITtecman 阅读(1183) 评论(0) 推荐(0) 编辑
摘要:程序启动时,Linux把4种类型的信息存放到程序堆栈中: (1)命令行参数(包括程序名称)的数目 (2)从shell提示符执行的程序的名称 (3)命令行中包含的任何命令行参数 (4)在程序启动时的所有当前Linux环境变量 程序名称、命令行参数和环境变量是以空结尾的长度可变的字符串。为了使工作更加简单,Linux不仅把字符串加载到堆栈中,它还把指向每个这些元素的指针加载到堆栈中,所... 阅读全文
posted @ 2014-08-13 20:34 ITtecman 阅读(402) 评论(0) 推荐(0) 编辑
摘要:我们知道函数中的局部变量存储在堆栈之中,如下图所示,当局部变量1、2、3存到堆栈中后,堆栈指针ESP并没有下移,依然指向原来的位置。出现这种情况的原因是:局部变量进入堆栈并不是使用push而是使用mov操作,所以ESP无变化。正是因为这样,如果函数把任何数据压入堆栈,那么局部变量将会被覆盖。 为了保护局部变量,解决方法是在函数代码的开始添加一行(针对汇编语言),通过从ES... 阅读全文
posted @ 2014-08-13 19:40 ITtecman 阅读(1946) 评论(0) 推荐(0) 编辑
摘要:二进制编码的十进制(Binary Coded Decimal,BCD)数据类型在计算机系统中已经存在很久了。BCD格式经常用于简化对使用十进制数字的设备(比如必须向人显示数字的设备,如时钟和计时器)的处理。处理器不是把十进制数字转换为二进制数字以便进行数学操作,然后再转换回十进制;而是可以按照BCD格式保存数字并且执行数学操作。 BCD的名称就说明了它的作用,它按照二进制格式对十进制数字进... 阅读全文
posted @ 2014-08-07 17:55 ITtecman 阅读(4929) 评论(0) 推荐(1) 编辑
摘要:曾在很多书籍中看到过关于原码、反码和补码的介绍,都未能够深入理解。今在Richard Blum编写的《汇编语言程序设计》一书中读到关于带符号整数一节的讲解时(确切的说是其中的一句话),的确有茅塞顿开、恍然大悟之感。原文如下: 7.2.3 带符号整数 虽然使用无符号整数很容易,但是其缺陷是没有办法表示负数。为了解决这个问题,在处理器上需要采用能够表示负数的方法。有3种方法用于在计算机... 阅读全文
posted @ 2014-08-07 17:07 ITtecman 阅读(490) 评论(0) 推荐(0) 编辑
摘要:《汇编语言程序设计》Richard Blum著:6.2.3中断 中断有两种形式: (1)硬件中断; (2)软件中断。 硬件设备生成硬件中断。 使用硬件中断发出信号,表示硬件层发生的事件(比如I/O端口接收到输入信号时)。 程序生成软件中断。 它们是把控制交给另一个程序的信号。 当一个程序被中断调用时,发出调用的程序暂停,被调用的程序接替它运行。指令指针被转移... 阅读全文
posted @ 2014-08-06 19:30 ITtecman 阅读(4702) 评论(0) 推荐(0) 编辑
摘要:《汇编语言程序设计》Richard Blum著:5.2.4 在内存和寄存器之间传送数据 使用变址的内存位置: 可以在一个命令中指定把多个值存放到内存中: values: .int 10,15,20,25,30,35,40,45,50,55,60 这创建存放在内存中的连续的一系列数据值。每个数据值都占用内存的一个单元(在上面的例子中是长整型,即4个字节)。引用数组... 阅读全文
posted @ 2014-08-06 16:03 ITtecman 阅读(1519) 评论(0) 推荐(0) 编辑
摘要:AT&T使用$表示立即操作数,而Intel的立即操作数是不需要界定的。因此,使用AT&T语法引用十进制值4时,使用$4,使用Intel语法时只需使用4。 AT&T在寄存器名称前加上前缀%,而Intel不这样做。因此,使用AT&T语法引用EAX寄存器写为%eax。 AT&T语法处理源和目标操作数时使用相反的顺序。把十进制值4传送给EAX寄存器,AT&T的语法是movl $4, %ea... 阅读全文
posted @ 2014-08-05 21:31 ITtecman 阅读(536) 评论(0) 推荐(0) 编辑
摘要:IA-32处理器平台允许3种不同的访问系统内存的方法: (1)平坦内存模式 (2)分段内存模式 (3)实地址模式 平坦内存模式把全部系统内存表示为连续的地址空间。所有指令、数据和堆栈都包含在相同的地址空间中。通过称为线性地址(linear address)的特定地址访问每个内存位置。 分段内存模式把系统内存划分为独立段的组,通过位于段寄存器中的指针进行引用。每个段用于包含特定类型... 阅读全文
posted @ 2014-08-05 18:57 ITtecman 阅读(3706) 评论(0) 推荐(0) 编辑
摘要:int __builtin_constant_p (exp); You can use the built-in function __builtin_constant_p to determine if a value is known to be constant at compile-time and hence that GCC can perform constant-folding ... 阅读全文
posted @ 2014-08-04 19:46 ITtecman 阅读(986) 评论(0) 推荐(0) 编辑
摘要:gcc内嵌汇编简介 在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作。 1、简单的内嵌汇编 例: __asm__ __volatile__("hlt"); "__asm__"表... 阅读全文
posted @ 2014-08-04 19:23 ITtecman 阅读(2661) 评论(2) 推荐(3) 编辑
摘要:pfdFactory Pro把word转为pdf的操作步骤: 1、打开将要转换的word的文档; 2、文件--->打印; 弹出如下对话框: 单击确定后弹出: 阅读全文
posted @ 2014-08-02 11:17 ITtecman 阅读(503) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示