代码与2:15

TopLanguage里断断续续待了一年多,对里面的谈话终于不再是一知半解,

许多题也许自己也有很好的思路,人总是还会有进步的吧。

本来提手写篇博文,准备聊一聊在俱乐部的事情,说一说自己的事情,听一听歌,想一想代码。

不过现在有点疲倦,而且这状态写正紧的事情不太妥当,于是还是扯一扯小故事吧。

继续阅读

发表在 唠叨 | 标签为 | 留下评论

深入理解计算机系统——第三章小结(1)

1. GCC按照自己的格式形成汇编代码并解释(GAS:Gnu Assembler),这一点与我们常学的MASM编译有差异:

    A.  movl 12(%ebp), %eax  表示 %ebp偏移12位置值送%eax ,事实上GCC汇编目的地址在右边。

    B.  目标文件(如: code.o) 是对独立文件编译汇编的结果。

    C.  产生目标文件后通过链接使程序整合成完整的机器级代码,也就是可执行文件。

    D.  简单的打个比方“01 05 64 94 04 08” 表示“add %eax, 0x8049464” 你会发现地址是反着放的。

2. 不用争字究竟多长了,其实Intel开始从16位体系扩展成32位体系时,一直把“字(word)” 表示16位。

对于多数32位机器“经典”的分配方式,“short int”整数分配2字节,“int” 分配4字节, “long int” 分配全字长。

然而这样分配是GCC的约定,至于GAS:

    A. GAS 中的 movb, movw, movl, 分别移动字节,字,双字。

    B. GAS中的 %eax, 表示 寄存器AX的Extend(?),也就是32位的AX。

    C. Imm(Eb, Ei, S) 是一种寻址模式,调用立即数Imm, 基址寄存器Eb,

         变址或索引寄存器Ei 和 伸缩因子(scale factor Ps:必须是1.2.4.8之一)

         操作数值 M[Imm + R[Eb] + R[Ei]*s],

         R[Ei]表示对寄存器取值, Mb[Addr]表示对内存取b长度值(这里省略b)

    D. GAS同样规定不能两个操作数同时访问内存。

    E. 指针保存的地址信息使得程序像低级代码一样灵活。

    F. 大部分人都会头大一下 Leal 7(%edx, %edx, 4), %eax 这样的指令,其实他只是将5*%edx+7 –》 %eax,

   很简单的理由是你实在没办法对%edx加载有效地址。

    G. 有关GAS的特殊指令(如64位乘,除法等),有兴趣参考相关资料,这里就不特别说了。

下次开始阅读程序流控制汇编码。

发表在 系统 | 标签为 | 一条评论

易混淆单词111组

原文出处:新东方

1. 	aboard adv.  prep. 在船(车/飞机)上, 上船(车/飞机)
	 board  n. 木板, 董事会 (包饭的)伙食 vt.上(船,车等)
	abroad adv. 国外, 海外
	 broad adj. 宽的,广阔的,广泛的

2. 	abstract adj. 抽象的 n. 摘要,梗概
	subtract vt. 减去(from)
	attract vt. 吸引:be attracted to 迷恋,喜欢
	
3. 	accent n. 口音,重音
	access n. 接近(或进入)的,机会,通道,入口
	excess n. 超过,过量 adj.过量的,额外的
	assess vt. 对…进行估价,评价
	asset n. 财产,资产
	exception n. 例外

继续阅读

发表在 网摘 | 标签为 | 留下评论

中秋

昨晚校内发生案件,死亡离自己太近的时候,总会有万分感觉吧。

研究了下海报的制作,发现还是很好弄得呢。详情猛击AutoMotivator

 

image

发表在 唠叨, 网摘 | 标签为 , | 留下评论

密码保护:警戒录

这是一篇受密码保护的文章,您需要提供访问密码:

发表在 未分类 | 要查看留言请输入您的密码。

密码保护:一些话和一些事

这是一篇受密码保护的文章,您需要提供访问密码:

发表在 未分类 | 要查看留言请输入您的密码。

How Do I Love Thee?

by Elizabeth Barrett Browning.

 

        How do I love thee? Let me count the ways.

I love thee to the depth and breadth and height

My soul can reach, when feeling out of sight

For the ends of Being and ideal Grace.

I love thee to the level of every day’s

Most quiet need, by sun and candlelight.

I love thee freely, as men strive for Right;

I love thee purely, as they turn from Praise.

I love with a passion put to use

In my old griefs, and with my childhood’s faith.

I love thee with a love I seemed to lose

With my lost saints, I love thee with the breath,

Smiles, tears, of all my life! and, if God choose,

I shall but love thee better after death.

 

发表在 软件 | 标签为 | 留下评论

腾讯微博邀请码

放在手上一直没人用…贴出来吧

http://t.qq.com/invite/a782275ea79801207a8d#

http://t.qq.com/invite/c323a45af0ff131b9335#

http://t.qq.com/invite/dfe97e21d7474f515561#

http://t.qq.com/invite/0affb0c9594005691cb3#

发表在 软件 | 标签为 | 留下评论

CSS颜色代码收集

FFFFFF #DDDDDD #AAAAAA #888888 #666666 #444444 #000000
#FFB7DD #FF88C2 #FF44AA  #FF0088  #C10066  #A20055  #8C0044 
#FFCCCC #FF8888 #FF3333  #FF0000  #CC0000  #AA0000  #880000 
#FFC8B4 #FFA488 #FF7744  #FF5511  #E63F00  #C63300  #A42D00 
#FFDDAA #FFBB66 #FFAA33 #FF8800  #EE7700  #CC6600  #BB5500 
#FFEE99 #FFDD55 #FFCC22 #FFBB00  #DDAA00  #AA7700  #886600 
#FFFFBB #FFFF77 #FFFF33 #FFFF00 #EEEE00 #BBBB00 #888800
#EEFFBB #DDFF77 #CCFF33 #BBFF00 #99DD00 #88AA00 #668800
#CCFF99 #BBFF66 #99FF33 #77FF00 #66DD00 #55AA00 #227700
#99FF99 #66FF66 #33FF33 #00FF00 #00DD00 #00AA00 #008800
#BBFFEE #77FFCC #33FFAA #00FF99 #00DD77 #00AA55 #008844
#AAFFEE #77FFEE #33FFDD #00FFCC #00DDAA #00AA88 #008866
#99FFFF #66FFFF #33FFFF #00FFFF #00DDDD #00AAAA #008888
#CCEEFF #77DDFF #33CCFF #00BBFF #009FCC #0088A8 #007799
#CCDDFF #99BBFF #5599FF #0066FF  #0044BB  #003C9D  #003377 
#CCCCFF #9999FF #5555FF  #0000FF  #0000CC  #0000AA  #000088 
#CCBBFF #9F88FF #7744FF  #5500FF  #4400CC  #2200AA  #220088 
#D1BBFF #B088FF #9955FF  #7700FF  #5500DD  #4400B3  #3A0088 
#E8CCFF #D28EFF #B94FFF  #9900FF  #7700BB  #66009D  #550088 
#F0BBFF #E38EFF #E93EFF  #CC00FF  #A500CC  #7A0099  #660077 
#FFB3FF #FF77FF #FF3EFF  #FF0 0FF  #CC00CC  #990099  #770077 

继续阅读

发表在 CSS, 网摘 | 标签为 | 留下评论

Eclipse下对代码优化的简谈

CS:APP 终于挺进了第三章,开始机器级代码优化的故事了,

因为现在大部分时间在windows下,手上没有顺手的环境,(虽然重要部分还是会去linux)。

还是谈谈Eclipse下打开优化开关的方法吧。

1.新建工程,这里取GAStest (GAS == GnuAsembler GNU汇编器)

2.修改代码

int accum = 0;
int sum(int x, int y)
{
	int t = x + y;
	accum += t;
	return t;
}

int main()
{
	return 0;
}

3. 编译,F11进入Debug模式,打开Disassembly视窗(Window->Show view)

image

上面的例子说明编译器编译 219ms, 产生机器指令16条(大约? 没细看)

4. 进入project选项,C/C++ Build –> setting –>tool setting –> Optimization 选择 –O2

注意使用编译器优化不是随便弄的,谨慎使用,

对大型project使用编译器优化可能会产生不可预料的错误。

5. 重复3.

image

上面的例子说明编译器编译 322ms, 产生机器指令10条。

发表在 C, Eclipse, 编程 | 标签为 | 留下评论