开源协议的选择

看到阮一峰发飙了一个图片关于开源协议的选择。

http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html

很简单明了,有助于选择的同时也有助于理解不同协议的不同之处。

c语言另类加法

今天Sunny给我提供了一个好玩的题目

 

1
2
3
4
	int a=2,b=5;
	printf(&a["Hi!Hello"],&b["fun/super"]);
	printf("\n");
	printf("%c%c%c%c",1["wst"],2["www"],0["ddd"],5["ewewrew"]);

输出是什么。
诈一看懵了。C语言哪来的字典。。。。
细看之,文章在于地址运算。
于是乎出来了以下另类用法。

1
2
&((char*)a)[b]   //a+b
&((int*)a)[b]     //a+b*4

不解释。:-p

新书入帐:W. Richard Stevens 系列

W. Richard Stevens系列就不多说了。

W. Richard Stevens对UNIX系列程序员的影响是不言而喻的,他的书本本经典。丰富的知识面,严谨的思维。

他的书可谓是UNIX程序员必备!

很惭愧学计算机后这么长事件后才把这套书收全,这次收的有:

TCP/IP详解 1-3卷

UNIX网络编程 1, 2卷

UNIX环境高级编程

最后缅怀下这位程序设计巨匠,谢谢您。

[阅读全文] »

GNU内联汇编详解

关于汇编,一直用的是直接写成库,或者函数。
最近一个小东西需要用到内联汇编,但是发现相关的东西忘的差不多了。复习一下顺便写点东西。

一般格式

1
2
3
__acm__ {
	"汇编代码"
};

这里可以把__acm__替换为acm 但是这种用法不符合ANSI C规范。不推荐使用。
在这种格式中,直接可以使用全局变量如:

1
2
3
4
5
6
7
8
9
10
11
12
13
#include
int a,b,r;
void main(){
	a = 10;
	b = 20;
	__acm__{
	"movl a, %eax \n\t"
	"movl b, %ebx \n\t"
	"addl %ebx, %eax \n\t"
	"movl %eax, r \n\t"
	};
	printf("sum is %d",r);
}

使用volatile修饰符可以防止编译器对内联汇编代码优化
[阅读全文] »

新书入账-编译原理(原书第2版)

被人誉为龙书的一本书。

编译原理教材中经典中的经典。

不多说。。

PS:话说现在购书癖越来越厉害了,看到好书不买难受,年末生活费快用完了,快没钱吃饭但是还是买书。。唉~~~~

现在都怕去各个网上书店了。。。

Compilers: Principles, Techniques, and Tools (2nd Edition)

Compilers: Principles, Techniques, and Tools (2nd Edition)

[阅读全文] »

Page 1 of 212»