- 博客(15)
- 资源 (16)
- 收藏
- 关注
原创 汇编栈操作指令的替代形式
push ebp相当于:add esp,4mov dword ptr[esp],ebppop ebp相当于:mov ebp,dword ptr[esp]sub esp,4call func_address相当于:push eipjmp func_addressret相当于add esp,4jmp dword ptr[esp-4]带参数的ret指令
2008-03-09 14:05:00 1525 1
原创 [C/C++] 函数调用的栈分配
当调用(call)一个函数时,主调函数将声明中的参数表以逆序压栈,然后将当前的代码执行指针(eip)压栈,跳转到被调函数的入口点。 进入被调函数时,函数将esp减去相应字节数获取局部变量存储空间。被调函数返回(ret)时,将esp加上相应字节数,归还栈空间,弹出主调函数压在栈中的代码执行指针(eip),跳回主调函数。再由主调函数恢复到调用前的栈。
2008-03-08 19:55:00 7336 4
转载 [资料]I386平台的内存布局
众所周知,I386是32位体系结构。因此对于绝大多数I386平台的C++编译器而言,sizeof(int)=sizeof(long)=sizeof(void*)=4。当然C++标准对此没有任何保证,我们也不应该试图编写依赖于此的代码。 32位指针的可寻址空间为4GB。为充分利用这么大的寻址空间,也是为了支持其它更先进的技术比如多任务技术或者动态链接库技术,WinNT使用虚拟内存技术,给与
2008-03-08 19:51:00 1420
原创 [C/C++] 可变参数表(Variable Arguments)
C/C++支持可变长度的函数参数表,程序员可以通过指针运算并提领来获取函数的任意个参数。由于C/C++默认的__cedcl调用规范规定:函数参数的压栈和弹出操作都经由主调方进行,所以被调函数其实并不不需要知晓参数数量。为了使用这种可变参数函数调用,需要在参数表末尾添加三个句点形成的省略号“...” void g(int a,char* c,...); 省略号之前的逗号是可选的,并不影
2008-03-08 19:46:00 2914
原创 编程为什么有趣?
编程为什么有趣?作为回报,它的从业者期望得到什么样的快乐? 首先是一种创建事物的纯粹快乐。如同小孩在玩泥巴时感到愉快一样,成年人喜欢创建事物,特别是自己进行设计。我想这种快乐是上帝创造世界的折射,一种呈现在每片独特、崭新的树叶和雪花上的喜悦。 其次,快乐来自于开发对其他人有用的东西。内心深处,我们期望其他人使用我们的劳动成果,并能对他们有所
2008-02-01 23:38:00 983
翻译 [Visual C++语言参考]结构化异常处理(SEH)
Windows 95 、 Windows 98 和 Windows 2000(以前的Windows NT)支持一种健壮的处理程序异常的方法,称之为"结构化异常处理(SEH)",这种方法与操作系统密切相关,同时直接在编程语言中被支持。 [微软编译器特定]语法:try-except语句: __try { //程序代码 } __except(表达
2008-02-01 20:22:00 1300
转载 [微软公司招聘题目]狗的问题
原题:一个大院子里住了50户人家,每家都养了一条狗,有一天他们接到通知说院子里有狗生病了,并要求所有主人在发现自己家狗生病的当天就要把狗枪杀掉。然而所有主人和他们的狗都不能够离开自己的房子,主人与主人之间也不能通过任何方式进行沟通,他们能做的只是通过窗户观察别人家的狗是否生病从而判断自己的狗病否。(就是说,每个主人只能看出其他49家的狗是不是生病,单独看自己的狗是看不出来的) 第一天没有枪声,第二
2008-02-01 15:19:00 1764
翻译 女人是祸水的数学证明:英文
∵女人需要钱和时间∴女人 = 钱 X 时间又∵时间就是金钱(Time is Money)∴女人 = 金钱 X 金钱 = (金钱)^2又∵金钱是万恶之源(MONEY is ROOT[平方根] of All EVIL)∴金钱^2 = 女人 = 罪恶 得证.
2008-02-01 15:16:00 1166
转载 [数学]海盗分金块
数学的逻辑有时会导致看来十分怪异的结论。一般的规则是,如果逻辑推理没有漏洞,那么结论就必定站得住脚,即使它与你的直觉矛盾。 1998年9月,加利福尼亚州帕洛阿尔托的Stephen M. Omohundro寄给我一道难题,它恰好就属于这一类。这难题已经流传了至少十年,但是Omohundro对它作了改动,使它的逻辑问题变得分外复杂了。 先来看看此难题原先的形状。10名海盗抢得了窖藏的1
2008-02-01 15:14:00 1017
原创 C++编译时 函数调用约定 与 函数名修饰约定规则
函数调用约定(Calling convention)决定以下内容: 1) 函数参数的压栈顺序 2) 由调用者还是被调用者把参数弹出栈 3) 产生函数名修饰的方法 __cdecl C/C++程序的默认调用规范由 调用方 清空堆栈 产生的可执行文件较大函数的参数个数可变.可变参数函数需要 __cdecl 约定__stdcall = WINAPI宏由 被调方 清空堆栈 产生的可执行文
2008-01-29 22:10:00 1752
原创 [VS 2005 IDE : C++Complier] Microsoft-Specific Modifiers' Usage
__based{ 该关键字主要用来解决一些和共享内存有关的问题,它允许指针被定义为从某一点(指针)开始算的32位偏移值, 而不是内存中的绝对位置. 每当用__based指针处理数据,CPU为其加上基地址,以指向真正的位置. 指针vpBuffer在之后代码中指向一段被分配的内存,则llist相对于vpBuffer重新予以定位. // based_pointers1.cpp // c
2008-01-29 21:17:00 1320
原创 寒假特训计划
通过开发以下工程,对Win32平台编程有一个整体的掌握和认识。实践工程列表:工程1.带类BASIC脚本的文字MUDTags:掌握技能:№1 数据结构基础与应用№2 STL泛型编程基础与应用№3 基于MFC的WIN窗体/界面设计№4 WINSOCK网络通信 服务器/客户端工作模式工程2.网络封包拦截分析/网游外挂Tags:掌握技能:№1 面向对象建模№2 C++异常处理№3 HOOK WINSOCK
2008-01-18 13:37:00 825
原创 Formula Draw 2008 制作体会
花了两天工夫 终于把这个程序搞定了 因为是新手接触WINAPI的第一个程序基本上是一遇到不知道定义的地方就翻书/上网查资料(MSDN还是用不习惯~~哎~~~)从最初简陋的GUI和单一的绘图功能,慢慢在随后的更新中趋于完善 而我也在这一过程中了解了许多WIN编程中会遇到的问题和注意事项 学到了很多的东西虽然这个程序还有不足 不过我想随着我对WIN编程了解的深入 一切难题都将克服
2008-01-11 16:14:00 746
原创 [FormulaDraw08]WINAPI使用ComDlg.h的注意事项
建立对应结构后用memset将结构体清零后再注册相关成员变量,随后调用创建ComDlg函数,范例如下://颜色通用对话框COLORREF RGB_CLR,CustColors[16];CHOOSECOLOR CD_CLR;memset(&CD_CLR,0,sizeof(CD_CLR)); CD_CLR.lStructSize = sizeof(CHOOSECOLOR);CD_CLR.hwndO
2008-01-06 00:05:00 1043
原创 [FormulaDraw08]关于WIN下编程的问题1
问题: 无法使用定义的函数: void LoadDrawFromFile(char * Filename); void LoadDrawFromFile(char * Filename);来打开指定的文件"template"问题地点:应用程序初始化函数 未出现此问题窗口处理函数 触发对应消息处理代码时出现该问题解决手段:使用inline来申明以上函数 问题解决猜
2008-01-06 00:00:00 769
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人