随笔分类 -  ASM C/C

摘要:make 命令会自动读取当前目录下的 Makefile 文件[31],完成相应的编译步骤。Makefile 由一组规则(Rule)组成,每条规则的格式是:target ... : prerequisites ... command1 command2 ...目标和条件之间... 阅读全文
posted @ 2015-03-31 16:17 ABeen 阅读(613) 评论(0) 推荐(0) 编辑
摘要:函数的可选性自变量 C语言允许定义自变量数量可变的函数,称为variadic函数。variadic函数需要固定数目的强制性自变量,后面是数量可变的可选性自变量。 也就是说必须至少有一个强制性自变量。 variadic 可变参数数量有前面的强制性自变量决定,或者有定义可选性自变量列表的特殊值决定。 经典的函数是printf 和 scanf,这两个是通过格式化字符串来提取可变参数的数量的。 阅读全文
posted @ 2015-01-29 23:05 ABeen 阅读(888) 评论(0) 推荐(0) 编辑
摘要:固定长度的数组: 可以具有任何的存储类别。 长度可变的数组: 只能具有自动的生存周期(定义于语句块内,眀没有static修饰符)。 名字必须为一般的标识符,因此结构或联合的成员不能是数组的标识符。 读写数组数据可按索引和指针两种方法。 阅读全文
posted @ 2015-01-28 22:45 ABeen 阅读(1241) 评论(0) 推荐(0) 编辑
摘要:C语言有两种可能的运行环境 1. 独立(freestanding) 在独立环境中,C程序执行不需要操作系统的支持,因此只具有最小的链接库能力。 2. 宿主(hosted) 在宿主的环境中,C程序会在操作系统的控制下执行,并且会使用操作系统所提供的支持,具有完整的标准链接库能力。 为宿主环境而编译的程序必须定义一个名为main的函数,这是程序开始时调用的第一个函数。 main 函数的定义有两种形式: int main(void){} // 没有参数, 返回int. int main(int argc, char *argv[]){} // 两个参数,返回int . 另外许多C的实现还支持以下定义 int main(int argc, char *argv[], char *envp[]) //三个参数,一个int,两个char **, 返回int. 阅读全文
posted @ 2015-01-26 23:27 ABeen 阅读(702) 评论(0) 推荐(0) 编辑
摘要:在利用make编译代码时,makefile文件的目标代码前面要用tab而不能用空格来代替。要不然就会提示: makefile:2: *** missing separator. Stop.要注意的是有些文本编辑器会把TAB替换成空格,让人一时找不到原因。如:set tabstop=4 set shi... 阅读全文
posted @ 2013-10-14 18:52 ABeen 阅读(1590) 评论(0) 推荐(0) 编辑
摘要:IEEE二进制浮点数的表示是IEEE把Intel设计的两种浮点存储格式规范化后得来。 IEEE短实数:32位(1位符号 + 8位指数+ 23位尾数)也称之为单精度浮点数。 IEEE长实数:64位 (1位符号 + 11位指数 + 52位尾数)也称为双精度浮点数。 阅读全文
posted @ 2010-03-16 20:32 ABeen 阅读(643) 评论(0) 推荐(0) 编辑
摘要:  GDB是一个符号式命令调试器。所谓“符号式(Symbolic)”,意思是在执行程序的时候可以使用变量名和函数名,就好像它们是在源代码中名称一样。为了显示和翻译这些符号,调试器需要与它们相关的信息,以及哪条机器指令对应哪行源代码的信息。这类信息会以符号表的形式出现。当用GCC编译和链接程序时,使用-g选项就会产生符号表。 阅读全文
posted @ 2009-12-21 23:46 ABeen 阅读(705) 评论(0) 推荐(0) 编辑
摘要:  在执行程序时,操作系统为进程分配一块栈空间来保存函数栈帧,esp寄存器总是指向栈顶。x86平台上这个栈是从高地址向低地址增长的,每次调用一个函数都要分配一个栈帧来保存参数和局部变量,C函数参数是按从右到左的顺序入栈的。各个堆栈桢之间是通过把ebp和eip压栈,而串在一起的。参数和局部变量是以栈帧基址(即ebp)为准+内存偏移量来定位和存取的。 阅读全文
posted @ 2009-11-24 17:55 ABeen 阅读(924) 评论(0) 推荐(0) 编辑
摘要:现在我们知道了计算机是怎么样运行、区分指令和数据、读写指令和数据的。那么计算机中的程序是怎么运行的呢?  在系统主板的ROM中存放着一套程序,称为BIOS(基本输入输出系统),主要包含以下几部分内容。 1. 硬件系统的检测和初始化程序 2. 外部中断和内部中断的中断例程 3. 用于硬件设备进行I/O 操作的中断例程 4. 其他和硬件系统相关的中断例程 操作系统也提供了中断例程,从操作系... 阅读全文
posted @ 2009-10-24 19:29 ABeen 阅读(370) 评论(0) 推荐(0) 编辑
摘要:任何一个通用的CPU,都具备一种能力,可以在执行完当前正在执行的指令后,检测到从CPU内部或外部送过来的一种特殊信息,并且可以立即对所接收到的信息进行处理。这种特殊的信息,称为中断信息。中断的意思是,CPU不再接着(刚执行完的指令)向下执行,而是转去处理这个特殊的信息。中断信息是要求CPU马上进行某种处理,并向所要进行的该处理提供了必备的通知信息。中断信息可以来自CPU 内部和外部。 内中断的产... 阅读全文
posted @ 2009-10-24 19:28 ABeen 阅读(567) 评论(0) 推荐(0) 编辑
摘要:高级语言经编译器编译生成后,最终会生成机器语言,汇编指令与机器语言又是对应的。所以汇编指令与高级语言语言定义存在一定的关系。 如:CALL、RET组合相当于方法调用。LOOP、LOOPE、LOOPZ、LOOPNE、LOOPNZ、JCXZ、JECXZ循环执行指令。INT、INTO、IRET中断,与并发执行和调试等有关。—————̵... 阅读全文
posted @ 2009-10-24 19:26 ABeen 阅读(2247) 评论(0) 推荐(1) 编辑
摘要:1. 汇编语言的产生计算机从本质上来讲,就是中央处理器(CPU)连接一堆外设。CPU是计算机的核心部件,它控制整个计算机的运作并进行运算。要想CPU工作就必须提供指令和数据。这些指令和数据在存储器(严格来说应该是逻辑存储器)中存放,也就是平台我们所说的内存。指令和数据是应用上的概念,在内存或磁盘上,它们没有区别都是二进制信息。CPU在工作的时候把有的信息看作指令,有的信息看作数据,为同样的信息赋予... 阅读全文
posted @ 2009-10-24 19:24 ABeen 阅读(446) 评论(0) 推荐(0) 编辑
摘要:从事计算机科学方面的工作,汇编语言是我们必不可少缺的基础。我们的工作平台、研究对象都是机器,而汇编语言是人和计算机沟通的最直接方式,它描述了机器最终所要执行的指令序列。学习汇编语言可以让你充分获得底层编程的体验,深刻理解机器运行程序的机理。 阅读全文
posted @ 2009-10-24 19:14 ABeen 阅读(481) 评论(0) 推荐(0) 编辑

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