/** * hello_asm_reg.c -- a demo for printing "Hello, Gcc Inline Assembly World!n" in gcc inline assembly * */int main(void){ char *str="Hello, Gcc Inline Assembly World!n"; __asm__ __volatile__ ( "pushl %%edx\n" "call puts\n" : :"d"(str) ); return 0;}
复杂的东西写多了,如今写点简单的好了。由于功能上的需要,Vczh Library++3.0被我
搞得很离谱。为了开发维护的遍历、减少粗心犯下的错误以及增强单元测试、回归测试和测试工具,因此记录下一些开发上的小技巧,以便抛砖引玉,造福他人。欢
迎高手来喷,菜鸟膜拜。 之前的文章讲了指针和内存的一些问题,今天说一下单元测试的问题。如果在团队里面没有对单元测试的框架有要求的
话,其实我们可以使用一个最简单的方法来搭建在IDE里面运行的单元测试框架,整个框架只需十几行代码。我们先来考虑一下功能最少的单元测试框架需要完成
什么样的内容。首先我们要运行一个一个的测试用例,其次在一个测试...
原创】多核机器下添加新中断的方法【文章标题】: 多核情况下添加新中断的方法【文章作者】: chimney--------------------------------------------------------------------------------【详细过程】 中断向量表的修改应该都很熟悉了,combojiang大侠在他的rootkit hook系列文章里将的很详细了。但是combojiang文章 中有关IDT的代码都是在单核机器中实现的,如果你有个双核的机子,你正好又学习了combojiang大大的文章,你就会发现出 问题了。因为每个CPU 都有自己的...
// utils.sh 文件#!/bin/shfunction colored_print(){ echo "colored print" echo "============================================" abc &> /dev/null}// test.sh文件#!/bin/sh#导入头文件. ./utils.shcolored_print
logiscope要求被分析的程序是一个完整的可编译的项目。而我希望可以对数个,至多几十个,且不是一个完整项目的C代码进行函数调用关系图。logiscope无法完成。logiscope要求完整的项目是因为它希望得到一个准确的call
graph,而我只希望 可以方便的得到call graph,就所不太准确也没有关系。事实上,如果代码不是完整的项目,的确是会得到有错误的call
graph。但对于一些临时性分析代码的任务,或者是无法得到一个很大项目全部代码时,进行部分代码的分析也是必要的。部门的专业人员建议使用打桩的方法使部分代码变成一个仅可编译的,在编译层面上是完整的代码,以规避...
// 目前我看到最短,速度最快的大整数阶乘纯C代码实现,如果有兴趣可以自己算算100000!// 原代码我只调整了下格式,想计算100000以上阶乘的请自己修改N的数值。#include <stdio.h>#define N 100000int n;int main(){ l: while(scanf("%d",&n) != -1) { int s[N]={1},t=2,a=0,b=0,m=0; if(n<2) { puts("1"); goto l; }...
// 目的:从字符串中提取数值( 包括浮点格式数据)#include <stdio.h>#include <ctype.h>#include <math.h>#include <malloc.h>// 如果是小数点则必须保证这个位置的前面和后面中有有一个数字// 如果是负号则要求// 数据格式的限制(简化操作)// 必须保证是符号开始的或者数字开始的制,如果是负号,则后面一定是数字// 一直查询到非数字和小数点才结束int process(char *str,double *data){ int row = 0 ; for(int i=0;*(str+i)!='\0';i++...
// 10 -4,-5,-6 #include <string.h>#include <stdlib.h>#include <string.h>#include <time.h>#include <stdio.h>#include <math.h>#include <dos.h>// 对uchar 类型图象数据添加误码void Add_Error_Code(char *in_fname,char *out_fname,short r,short c, double err_rate,short seed) { FILE *stream; unsigned cha...
/********************************************************\ *牛顿下山法 *非线性方程求根 *目标: *用牛顿下山法,求非线性方程x*x*x-x-1=0,的根。 *要求: *输入,初值,误差限,最大迭代次数,最大下山次数; *输出,近似根以及下山因子 *评价: *使用牛顿下山算法 目标就只能求出一个根 并且在初值附近. *因为算法只设计了一个出口.即X1-X0<E. 满足此条件 即结束 \*******************************************************/#include"iostr...
C语言中有一种长度不确定的参数,形如:"…",它主要用在参数个数不确定的函数中,我们最容易想到的例子是printf函数。
原型: int printf( const char *format [, argument]…
); 使用例: printf("Enjoy yourself everyday!\n");
printf("The value is %d!\n", value);
这种可变参数可以说是C语言一个比较难理解的部分,这里会由几...
http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/C-Extensions.html#C-Extensions是GCC的51项扩充的说明,若有时间,不妨一阅。
http://en.wikipedia.org/wiki/ISO_C它给出了C语言的定义。
Try-finally语句是微软对C语言做的
扩展(不通用),以保证某个代码段执行中断之时程序能够执行“清除”代码。“清除”代码主要用于执行释放内存、关闭文件以及释放文件句柄等任务。如果一个函数中有多
处需要进行错误检查,并且检查出错误后就需要从函数中退出,那么这时候try-finally语
句就显得格外有用。
try-finally语句语法:
__try 复合语句
__finally 复合语句
__try后
面的复合语句是受保护的区域。__finally后面的复合语
句是终止处理语句。无论受保护区域是正常终止还...
<<导入表的获取与动态填充>>初步学习笔记[1]导入表结构的获取<1.>获取PE基址
(IMAGE_DOS_HEADER)<2>.获取PE头部(IMAGE_NT_HEADERS32)<3>.
获取导入表的存储结构(IMAGE_NT_HEADERS32.OptionalHeader.DataDirectory[1])导出
表:IMAGE_NT_HEADERS32.OptionalHeader.DataDirectory[0]导入
表:IMAGE_NT_HEADERS32.OptionalHeader.DataDirectory[1]结构其实就是一个
IMAGE_DATA_DIRE...
API
Hook的几种实现
所谓的API
Hook,就是利用某种技术将API的调用转为我们自己定义的函数的调用。这种技术在实际项目里面的应用也是很广泛的。最近,我在做关于我们项目的自动化
测试的时候,就遇到了这种情况。在写测试代码之前,我们对测试代码有一些要求。1. 不能因为测试代码而修改原代码。2.
原有的模块是以dll格式输出的,在做测试的时候,要测的类和函数也只能使用dll的导出类或者函数,而不能将源文件重新编译。由于这些限制,导致测试用
例往往不能在普通的机器上运行。比如这样一个函数:
<!--Code highlighting ...