C语言
文章平均质量分 59
feijinxinsi
这个作者很懒,什么都没留下…
展开
-
数据表示(整型)
一、有符号数向无符号数转换(w位) x +2w , x < 0 T2Uw(x)= { x, x >= 0 二、无符号数向有符号数转换(w位) x, x < 2w-1...原创 2015-04-21 17:22:28 · 240 阅读 · 0 评论 -
数据表示(浮点)
先说说历史: 众所周知,浮点数是用来表示远远大于或者小于0的数以及无限趋近于1的数,在近似计算中也扮演着重要的角色。20世纪80年代初,各个计算机生产厂家都发明了自己的一套表示和运算浮点数的规则,当时他们认为易实现比精度更为重要。这个现象直到80年代中期,IEEE 754标准出来才得到改善。754标准始于1976年,Intel雇佣伯克利大学教授William Kahan作为开发808...原创 2015-04-22 13:14:18 · 190 阅读 · 0 评论 -
C语言汇编代码分析(函数)
C语言中的函数(或称为方法或者过程)是通过进程的栈空间来进行管理的,一个个函数在栈空间的表现就像是一幅一幅的图片,称为栈帧(stack frame)。其中寄存器%ebp始终指向栈帧的开始,而寄存器%esp则像游标一样在相邻两个栈帧中滑动来存取值。下面以一个实际例子来说明: 由上图可知函数compare调用函数max, 不同颜色代表不同的栈帧,我们来开始分析汇编代码:首先我们假设此时...原创 2015-04-23 15:29:45 · 610 阅读 · 0 评论 -
C语言汇编代码分析(for循环)
请看下面的例子 图片左边为C语言代码,右边为对应的汇编代码,汇编代码有点多,我们着重关注用红色矩形框住的区域: movl $0, %ecx; 将0赋值给%ecx寄存器,相当于源码中的第6行的i=0表达式,注意汇编采用%ecx作为循环 ;计数寄存器,相当于c源码中的变量i的作用 .L2; 汇编中称为标记,和c语言goto语句的参数意义相同,用...原创 2015-04-24 13:58:15 · 1189 阅读 · 0 评论 -
C语言汇编代码分析(while循环)
我们来看下面的例子: 我们将上一篇中for循环的例子改为while循环,然而生成的汇编代码却是一模一样的,这里就不在赘述了。有兴趣的朋友请查看《C语言汇编代码分析(for循环)》。 ...原创 2015-04-24 14:10:55 · 779 阅读 · 0 评论 -
C语言汇编代码分析(switch case)
我们来看下面的例子: switch-case控制语句维护着一张跳转表(jump table),并不是用一系列的if-else来实现,在上例中就是标签L7标记的地方。 跳转表方式大体思想是这样的: 用case语句中的最大值减去最小值求出一个区间,这里是106-100 = 6,即 0到6共有7个可能的case,此时编译器为该switch-case控制分配长度为7的数组...原创 2015-04-24 15:10:26 · 1843 阅读 · 0 评论 -
解数独程序
// Soduku.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <map>#include <iostream>#include <set>#include <algorithm>#include <vector>using namespace ...原创 2017-09-05 15:28:55 · 239 阅读 · 0 评论