• 10
  • 12月

今天,F哥给我做了一下计算。

最近上班在写一个程序,从上周三开始的。然后到今天,数了一下,大概有1K多行程序。

于是,我们就得出一个结论,目前上班,一天平均100 - 200行程序。

嗯,做一下记录,以便做项目耗时的评估。

  • 6
  • 12月

这个世界,牛人太多!

突然发现,自己真是太渺小了,太微不足道了。出来工作了快两年了,可能真的连一个中学生也比不上。有时候甚至都在想:走这条路是不是正确的?若干年后,自己在这个职位上是否还有立足之处?

整理一下目前发现的一些牛人吧。当然,太远的就不说了,就说说就在自己身边的吧:

Figos
就是F哥了,我的老大、老师、好朋友。我就是他带出来的,可惜,还是有一大段差距。

Hoofei
很喜欢他做的美工风格。现在用的Blog皮肤就是他设计的。

Xiaoxia
在我写这篇日志时,他才刚上大一,也是华南理工大学的。高中时代,就已经写下了自己的操作系统:SGOS2008,还破解了QQ的通信协议,写了自己的QQ软件吧。而已经出华工出来的我,又能写些什么?

混蛋70
Typecho,也就是这个博客的程序的作者。PHP我也玩挺久了,可是,真的还是没能写出一些什么呢?

TualatriX
Ubuntu Tweak的作者。嗯,很强大!相比之下,我连Linux的基本操作还不会?

Longbill
也是一个学PHP的,在高中时代就已经开发出了PHPCMS

Shuang
这个空间很久没更新了。玩过作者之前开发的《画笔大战》。

Victor_Dinho
大学时的一个师弟。他,还有他的一个同学都是大牛!

Jumping
很早以前认识的网友了,很久没有联系上了。开发过《超快俄罗斯方块》,对一些算法设计,也有自己的见解。




以上的基本都是同龄甚至小很多的人,有的是我的网友,有的根本不认识,因此,以上见解仅代表个人观点。当然,还有许许多的牛人,我还没发现的。发现这些人,不是为了打击自己的自信心,而是为了给自己一个向前的目标,对吧!

  • 29
  • 11月

稍微升级了一下Typecho评论过滤插件

主要就增加个IP段过滤功能。其实,好像也不是特别需要,可能会有人需要,顺手加上吧。

下载地址

  • 26
  • 11月

这几天一直被一个叫Global Offset Table的东西困扰着。

在uboot的程序上看到一个叫_GLOBAL_OFFSET_TABLE_的东东,却到处找不到。经过一番Google,才明白这东东叫全局变量偏移表,用来做与位置无关的程序编译时使用的。并且编译选项要加上-mabicalls。另:与程序位置无关的编译选项是:-fpic和-fPIC。

Global Offset Table里,存得是一些函数地址,放在.got段。一般是使用gp来访问。

不过在资料中还看到,这个主要用于一些动态库。如果没用到动态库的话,应该也不是十分太需要吧,毕竟使用GOT会影响small data的使用,同时会增加每个函数调用所需的指令。

  • 25
  • 11月

费了好大的劲,终于知道gp寄存器的用法了。

首先说说gp寄存器出现的原因吧,由于RISC体系的CPU,每条指令都是32Bit,而地址总线也是32Bit,这样,就不可能通过一条指令来实现Memory的访问。

MIPS中,访问Memory的指令格式为:

lw r1, offset(r2)

其中,offset为16Bit,也就是说,最多能访问以r2为基地址,前后32K的空间。

于是这个时候,gp就闪亮登场了。

我们知道,GCC在编译过程,会将变量分别放在data,bss,common等段。而编译mips程序时,会将小变量放入sdata,sbss,scommon等段。这个大小由编译选项-G来决定。-G0则表示不使用小数据段。默认是-G8,表示小于或等于8 byte的数据将放入小变量区。

这样的话,在上电时给gp初始化一个值,那么,所有小变量区的变量就可以通过

lw r1, offset(gp)

来访问了。

那么,GCC怎么知道gp初始化的值呢?只要在link文件中添加_gp符号,连接器就会认为这是gp的值。我们在上电时,将_gp的值赋给gp寄存器就行了。