摘要:
1 #include "stdafx.h" 2 3 4 5 int fun(int a,int b) 6 { 7 int c=a+b; 8 int i; 9 for(i=0;i, ;给循环变量赋初值 2 jmp B ... 阅读全文
摘要:
在高级语言出现的早期,很可能根本就没有这个区别。高级语言被编译成可执行的机器代码,一种版本就足够了。但是人们发现那些可执行的机器码是可以被优化的。比如说已经定义了但没有使用的变量、根本不可能执行到的代码,完全可以去除。一些跳转来跳转去的复杂逻辑,可以用简单的跳转替代。一些多余指令才达到目的的情况,实际上用一条指令就足够了。连续不断的优化操作,是最终编译越来越简洁、高效。 但是这又出现了另一个问题。当bug发生时,开发者需要调试。然而经过优化的代码,常常看上去已经和原来的高级语言逻辑大相径庭(虽然它们之间的功能应该是等价的)。这样以来调试者就往往摸不着头脑。此时就希望编译器不要优化或者... 阅读全文
摘要:
函数参数的传递规则函数传递的规则现在一般有两种,一种是WINAPI方式,也就是_stdcall还有一种是_cdecl方式_stdcall调用规则:(1)参数从右到左进入堆栈(2)被调用者在返回前自动清理堆栈_cdecl C方式调用规则:(1)参数从右到左进入堆栈(2)由调用者负责清理堆栈生成的程序代... 阅读全文
摘要:
常用的汇编指令:push :把一个32位的操作数压入堆栈中。这个操作导致esp被减4.esp被形象地称为栈顶。我们认为顶部地址是地址小的区域,那么,压入堆栈的数据越多,这个堆栈也就越堆越高,esp也就越来越小。在32位平台上,esp每次减少4(字节)。pop :相反,esp被加4,一个数据出栈。po... 阅读全文
摘要:
一个项目的服务器端在Linux平台下,用到了开源日志库log4cxx,这个库是apache项目的一个子库。功能很不错。下面记录下它的编译和安装过程。log4cxx的官方下载地址是http://logging.apache.org/log4cxx/index.html,我用的是0.10.0版本。为了编译它,还需要两个辅助库,apr,和apr-util,可以在这里下载http://apr.apache.org/download.cgi,我用的版本分别是apr-1.3.8.tar.gz和apr-util-1.3.9.tar.gz。第一步安装apr-1.3.8,顺序不能错,它必须首选安装$tar zx 阅读全文
该文被密码保护。 阅读全文
该文被密码保护。 阅读全文