程序设计
文章平均质量分 64
heron804
这个作者很懒,什么都没留下…
展开
-
regparm
GCC中可以使用__attribute__((regparm(n)))指定最多可以使用n个寄存器(eax, edx, ecx)传递参数,n的范围是0~3,超过n时则将参数压入栈中(n=0表示不用寄存器传递参数)。看下面例子,函数p1约定不使用寄存器传递参数,尽管只有1个参数,仍然将参数压入栈中。函数p2约定最多可使用3个寄存器传递参数,因为输入参数有4个,所以前三个使用寄存器传递,最后一个原创 2012-03-28 13:36:05 · 2802 阅读 · 0 评论 -
__thread, __typeof__与逗号表达式
1 __thread修饰符约束变量的生存期只在一个线程中,线程停止时变量也被销毁。它提供了一种简单的方式来保证线程安全,多线程访问时不需要关注竞争条件。2 __typeof__操作符:指示表达式的类型,任何可以使用typedef定义名称的地方都能使用它。__typeof__(*x) y; // Declares y with the type of what x point原创 2012-06-09 08:40:48 · 1214 阅读 · 0 评论 -
编译器对程序的优化过程
编译器的优化过程:优化过程是所谓的“NP完全问题(NP-complete problem)”复杂度理论的例子。但现代的优化程序并不尝试完全的可能,只是用启发式和案例型算法来确定机器码应采取的转换过程。最好不要使用goto语句,goto不见可能降低程序的可读性,还可能导致程序不能规约,使得编译器的优化工作很难进行。常用的优化措施有下面7种:(1) 常量折叠:即编译时计算出常量表达原创 2012-07-25 13:47:57 · 1651 阅读 · 0 评论 -
intel X86指令格式分析
先说一下寄存器编号0 1 2 3 4 5 6 7EAX ECX EDX EBX ESP EBP ESI EDIintel指令格式如下图所示:Mod为00、01和10时,R/M=000(eax)时,有效地址分别是[eax]、disp8[ea原创 2013-04-12 19:00:15 · 4037 阅读 · 0 评论 -
快速排序与折半查找算法函数:qsort与bsearch
qsort用来排序,bsearch用二分法来查找元素void qsort( void *base, size_t num, size_t width,int (__cdecl *compare)(const void *elem1, const void *elem2 ) );base: 要排序的数组num: 数组中的元素数目width: 每个数组元素占用内存空间,可使用sizeo原创 2013-04-21 11:41:38 · 1843 阅读 · 0 评论 -
C#访问网页、保存网页
很喜欢看经典书籍,所以就想把网络上的书籍下载下来,做成kindle的电子书籍,以便于阅读。查了一些网络资料,实现了自己的想法,下面这段代码,是从国学导航网站(http://www.guoxue123.com)把《北史》的全部内部保存到本地的“C:\temp\北史”文件夹里。using System;using System.Collections.Generic;using Sys原创 2015-10-03 15:02:18 · 4620 阅读 · 0 评论