Linux进程的栈和进程中函数的栈帧及其结构


主要理解了Linux进程的栈和函数的栈帧的区别和联系

\

<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KCgoKyc/NvNbQv8y7rbXEysfSu7j2TGludXi9+LPMtcS94bm5zbyjrMbk1tCxvs7Ez+vSqrnY16K1xNW7yOfJz828y/nKvsrH1bu119TaMHhjMDAwMDAwMLXY1re13bz1tcTSu7/pvfizzMTatObH+NPyCkxpbnV4z7XNs9bQzqrDv7j2vfizzLfWxeS1xMq1vMq089ChzrTX9snuvr8KTGludXi9+LPMtcTVu7XE1fvM5cjP1qq+zcrH1eLDtLbgo6y8tAoxo6nVu7XX1NoweGMwMDAwMDAwo6iyorK70OjSqtW7tdfWuNXro6y6r8r9tcTVu9ahssXQ6NKq1bu119a41eujqQoyo6nVu7XE1PazpLe9z/KjrLXY1re13bz1t73P8gozo6nVu7al1rjV62VzcAo0o6m089ChzrTWqqOosrvKx7G+zsS52NeitcTW2LXjo6kKNaOpwO/D5rTmt8W1xMTayN3Kx8qyw7TE2KO/Cjxicj4KCr34s8y1xNW71tC05rfFtcTKx7qvyv2199PDtcTVu9ahCjxicj4KCry0we3Su7j2uMXE7srHyc/OxNbQzOG1vbXEuq/K/bXE1bvWobXEuMXE7rywxuTT60xpbnV4vfizzNW7tcS52M+1Crqvyv21xNW71qG+zdTavfizzNbQtcTVu7XEveG5ubrNt9bF5LXEtdjWt7/VvOS8sMq1vMrE2rTm1tAKuq/K/bXE1bvWodX7zOW1xMDtveLKx6O6CjGjqWVicMrHuq/K/dW71qG1xNW7tdcKMqOpZXNwysfVu7alo6jSu7j2uq/K/bXEu+62r7zHwry+zdTaZWJwKLjftdjWtym6zWVzcCi1zbXY1rcp1q685KOpCjOjqdK7uPa9+LPMtcTL+dPQtcS6r8r9tcTVu9ah1Nq199PDtMu6r8r9tcTKsbryvajBoqOst7W72LX308PV37rzo6yxu7X3uq/K/bXE1bvWobK71Nm05tTaCjSjqcv509C1xLqvyv21xNW71qG1xL2owaK6zc/7yqfKx8vm18W9+LPMtcTWtNDQtvix5LuvtcTSu7j2tq/MrLn9s8wKNaOp1bvWodbQtOa3xbXExNrI3crHyrLDtMTYo78KPGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20150306/2015030609524682.png" alt="\">
栈帧中存放的内容一般包括以下几个方面的内容: 1)函数的返回地址和参数 2)临时变量:包括函数的非静态局部变量和编译器自动生成的其他变量 3)保存的上下文:包括在函数调用前后需要保证不变的寄存器值 进程中的函数在进程提供的栈中要解决的是调用者和被调者的关系 1)如何从调用者进入被调者?call 2)如何从被调者返回调用者?ret 3)调用者如何支配被调者(被调函数参数传递)?参数 4)被调者的价值如何体现(返回值的传递)?寄存器eax、edx

其中还有两个问题值得去看 1)被调函数返回值的传递方式 2)函数的调用惯例

相关内容