- 博客(4)
- 收藏
- 关注
原创 Function Call Stack
从汇编语言看,函数的调用就是CALL和RET两条指令。其中CALL负责将返回地址(即CALL指令下一个指令的PC)压入堆栈,然后跳转到CALL指令中所指定的PC开始执行。而RET则相反,从堆栈中弹出返回地址,并重新跳转到返回地址开始执行。因此从汇编语言层面看,所有函数参数和返回值的传递,寄存器的保护,以及局部变量空间的分配都需要显式地通过堆栈来完成。尤其是对函数参数和返回值,函数及其调用者都必须遵循相同的规则在堆栈中存放上述信息,从而保证这些信息在两者之间传递的正确性。这个规则就是Calling Conve
2010-09-19 23:33:00 945
转载 Byte Order
1、 前言作为一名 C/C++ 程序员,字节是我们天天都要与之打交道的一个东西。我们和它熟稔到几乎已经忘记了它的存在。可是,它自己是不甘寂寞的,或迟或早地,总会在某些时候探出头来张望,然后给你一个腿儿绊。其实,只要你真正了解了它的底细,你就会畅行无阻。在本文中,我们将首先简要了解一下字节的概念,然后着重了解一下字节序问题和字节对齐问题。注:笔者已经尽最大努力保证本文信息的正确性,但确实无法提供百分之百的担保。2、 什么是字节我们知道,二进制计算机(也就是我们目前接触到的几乎所有的计算机)的最小数据单位是位(
2010-09-16 23:45:00 874
转载 Byte Alignment
一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必
2010-09-16 23:41:00 640
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人