日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

Part10-C語言環(huán)境初始化-棧初始化lesson1

發(fā)布者:EtherealEssence最新更新時(shí)間:2024-10-14 來源: cnblogs關(guān)鍵字:初始化 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

1、概念解析

ARM系統(tǒng)使用的是滿棧!

ARM采用降棧?。?!

棧幀

每一個(gè)進(jìn)程會(huì)有一個(gè)棧,該進(jìn)程中的每一個(gè)函數(shù)會(huì)分割棧的一部分,那么每一個(gè)函數(shù)使用的那部分棧就叫做棧幀。那么所有棧幀組成了整個(gè)棧。

子函數(shù)func里面保存了main函數(shù)的上邊界FP和下邊界SP。

2、棧的作用

保存局部變量

代碼樣例

編譯之:

arm-linux-gcc -g  stack1.c -o stack1

反匯編之:arm-linux-objdump -D -S stack1 >dump

dump里面的結(jié)果

首先是push {sp},具體是將str fp,[sp,#-4]!,里面讓sp先減4再存。加一個(gè)!號(hào),表示使sp-4,但不會(huì)對(duì)sp本身有影響

add fp,sp,#0把sp加0的值賦值給fp,實(shí)際就是把sp賦給fp,讓fp也指向棧頂,

sub sp,sp,#12

執(zhí)行c語言的a++,它是ldr r3,[fp,#-8],從這個(gè)地址的內(nèi)容拿到r3,該地址的內(nèi)容實(shí)際上就是a的值,然后再add r3,r3,#1,加1后再存回原來的地方。

傳遞參數(shù)

在c語言傳遞參數(shù)的過程當(dāng)中,如果參數(shù)的個(gè)數(shù)小于或等于4的就用r0到r3,如果大于的話就要用棧來傳遞

保存寄存器的值

3、棧初始化編程

就是對(duì)sp指針進(jìn)行賦值,

6410內(nèi)存256MB內(nèi)存位置0x20000000+64MB

210內(nèi)存512MB內(nèi)存位置0x50000000+64MB(0x4000000)

2440內(nèi)存64MB,內(nèi)存位置0x30000000+64MB

那么我們把sp指針統(tǒng)一指到內(nèi)存的64MB處(它是向下自減的)


關(guān)鍵字:初始化 引用地址:Part10-C語言環(huán)境初始化-棧初始化lesson1

上一篇:Part9---代碼搬移不可少
下一篇:Part10-C語言環(huán)境初始化-Bss段初始化lesson2

小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved