2011-2-21 小结
- mingw环境下编译boost
下载bjam.exe 然后: bjam install --toolkit=gcc debug .... - 在编写通讯方面的程序时,注意字符串中'\0'的意义。
sudo dpkg -i --force--all <packagename.deb>
想要了解Go的底层机制,必须了解其与汇编程序(plan9 asm)混合工作的方法,以下是个人的一些总结。
1, 形式
在go文件中添加包和函数的声明,在s文件中实现函数,分别使用8g和8c处理后,用gopack打包成a文件,安装到包目录中。然后就可以在一般的go文件中导入混合实现的包了。
2, 汇编函数格式
TEXT <package name>·<func name>+0(SB),$X-Y
<instructions>
RET
<package name> : 包名,可省略
<func name> : 函数名
<instructions> : 指令序列
X : 自动变量占用的栈空间
Y : 参数和返回值占用的栈空间
包名与函数名之间的点为间隔符,vim中的输入方式为<C-V>u00b7
3, 参数、返回值的传递方式
从右到左,在栈中留出返回值的空间,参数压入栈中。
4, 栈空间维护
plan9汇编中,自动实现函数栈空间的维护,不需要显式的维护操作。在函数的第一行,给出了自动变量、参数和返回值的空间大小。进入函数后,name+0(FP)指向返回地址,386架构中, name+4(FP)指向第一个参数。FP(frame pointer)是一个伪寄存器,使用时必须加上参数名称: name+0(FP),name可为任意值。SP为真实的栈指针,指向第一个自动变量。
参考:
我的白领朋友们,如果我是一个初中没毕业就来沪打工的民工,你会和我坐在“星巴克”一起喝咖啡吗?不会,肯定不会。比较我们的成长历程,你会发现,为了一些在你看来唾手可得的东西,我却需要付出巨大的努力。
从我出生的一刻起,我的身份就与你有了天壤之别,因为我只能报农村户口,而你是城市户口。如果我长大以后一直保持农村户口,那么我就无法在城市中找到一份正式工作,无法享受养老保险、医疗保险。你可能会问我:“为什么非要到城市来?农村不很好吗?空气新鲜,又不像城市这么拥挤。”可是农村没有好的医疗条件,去年SARS好像让大家一夜之间发现农村的医疗保健体系竟然如此落后,物质供应也不丰富,因为农民挣的钱少,贵一点儿的东西就买不起,所以商贩也不会进太多货。春节联欢晚会的小品中买得起等离子彩电的农民毕竟是个别现象,绝大多数农民还在为基本的生存而奋斗,于是我要进城,要通过自己的奋斗获得你生下来就拥有的大城市户口。 (..More)
最新评论