【编程范式】汇编解释swap方法

先要熟悉一些汇编的基本知识:


1.SP是什么?


 

SP是堆栈寄存器,在调用子程序时,都会用到,保存原来程序的环境使用,如各个寄存器的内容,最重要的是,调用返回时程序的运行指令地址,这是由调用时将返回地址压入堆栈,返回时取出并传给PC寄存器来实现的。给SP的初始化值的大小,显示了堆栈的存放位置和堆栈的大小,如果堆栈太小,会出现堆栈溢出的问题。(其内容为栈顶的偏移地址。)
2.PC是什么寄存器?
PC是16位程序计数器(Program Counter),它不属于特殊功能寄存器范畴,程序员不以像访问特殊功能寄存器那样来访问PC。PC是专门用于在CPU取指令期间寻址程序存储器。PC总是保存着下一条要执行的指令的16位地址。通常程序是顺序执行的,在一般情况下,当取出一个指令(更确切地说为一个指令字节)字节后,PC自动加1。如果在执行转移指令、子程序调用/返回指令或中断时,要把转向的地址赋给PC。



引用的汇编代码跟上面一模一样:

int  x = 17;
int y= x;
int z = &y;

下面图阴影部分,就是
int *z = &y;
X  
Y  
Z////////////////////////////////////////////// 指向Y这个地址


 

 

 

posted @ 2013-07-04 19:03  爱生活,爱编程  阅读(793)  评论(0编辑  收藏  举报