2013 0317

  这里要抱歉一下,上周没有写, 理由就不找了,这里要强调的是,自我执行力确实很重要,这里逼迫自己,无论如何 ,每周抽出一小时的时间肯定是有的。so...  没有理由不坚持下去。


   上周除了工作之外,主要都是在看《深入理解计算机系统》这本书,这本书很是不错,对于程序的每一个点都讲的很详细,确实是一本好书。

   工作中发现的问题:

  1、STL中,如vector中,如果你存储的是一个指针, 那么当这个指针的对象已经释放了的时候,你一定要在vector中将这个erase掉,因为此时这个指针依然存在,只是它所指的地方已经被释放,这样的话,这个指针就是一个随机数,会极大的破坏你的程序。


  学习中的总结:

   1、数值转换时需要注意的问题

 低精度到高精度的装换:举例如下

            short           ----------->          int                             short         ----------------->    unsigned

正数                    没有变化                        没有变换

负数                    高位补1(算术拓展) 高位补0(逻辑拓展)

                    有符号 ------------------------------------------->无符号 

正数 没有变化

负数 x+ 2的W次方

    无符号  ------------------------------------------->有符号

       当       0< x  <  2的(W-1)次方时   没有变化

x< 0 时               加上 2的W次方

        当         x >= 2的(w-1)次方        需要减去  2的w次方

注:w为当前计算机的位数,如32位、64位

一个经验,就是用数值的时候出现unsigned的类型时,如果出现减法,就一定要注意,否则会产生意想不到的错误。



    2、汇编语言的一些基础

学习汇编主要是因为《深入理解计算机系统》的第三章:程序的机器级表示,这一章带你了解你写的程序(如C语言程序)在机器级代码中是如何展示的,关于学习汇编的原因会在第三章看完的时候(预定是下周)来总结,这里先介绍汇编的基础知识:

       普及下一个基础知识,经常听到想i386、x86-64这样的术语,这些术语其实是cpu的类型,如i386是指intel的32位计算机系统,而x86-64是指inter在64位下对i386指令的拓展。所以这些i386、x86-64等等, 都是cpu的类型。

(1) 八个寄存器

eax、ecx、edx、ebx、esi、edi、esp、ebp

其中,前六个寄存器是存储数值等的寄存器,而esp是存放栈指针的,ebp是存储帧指针,这八个寄存器以后会在汇编语言中经常出现。

(2)指令操作符

寻址模式 格式 操作数值 名称 举例

立即数 $Imm Imm 立即数寻址 $4   代表数字4

寄存器 Ea R[Ea] 取寄存器的值 %eax

       。。。。。。。。。。。。。

这里就不一一列举,详见《深入理解计算机系统》p113

(3)数据传送指令

movb、movw,movl  传送

movsbw、movsbl,movswl 传送符号拓展的字节

movzbw、movzbl、movzwl 传送零拓展的字节

(4)算术逻辑拓展

   。。。。。。


由于还没有看完,我会在看完的时候来进行详解


加油!!!







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值