天天看點

【程式設計範式】彙編解釋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這個位址