程序的机器级表示


不管是高级语言还是低级语言,都会被编译器或者虚拟机转变成机器能够识别的二进制字符序列才能够执行。

ESP和EBP的概念:

ESP:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。

EBP:基址指针寄存器(extended base pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。

计算机通过栈这种抽象的数据结构,对数据进行操作,完成四则运算(加减乘除)。

编程语言越来越接近自然语言,但是计算机能够识别的仍然是01序列。从刻在纸带上面执行的语言,到汇编,到c语言再到java,虽然可读性越来越高,对人类阅读习惯越来越友好,但是对机器执行却是相反。高级语言不得不想尽各种办法提高机器执行效率,例如java,首先要用编译器编译成二进制文件(即.class文件),然后通过虚拟机解码到相应平台执行。另外,高级语言还要考虑操作系统特性。个人认为,高级语言是对操作系统编程,低级语言是对硬件的直接编程。

了解计算机体系结构,以及语言的编译执行方式,能够帮助我们更加优雅而且高效的代码。以下例(见if语句):

Node<E> node(int index) {
    // assert isElementIndex(index);
    if (index < (size >> 1)) {
        Node<E> x = first;
        for (int i = 0; i < index; i++)
            x = x.next;
        return x;
    } else {
        Node<E> x = last;
        for (int i = size - 1; i > index; i--)
            x = x.prev;
        return x;
    }
}

如果平时不了解计算机乘除法其实就是数据位移的运算,这种代码很自然的就能够写出来。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值