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處(它是向下自減的)
上一篇:Part9---代碼搬移不可少
下一篇:Part10-C語言環(huán)境初始化-Bss段初始化lesson2
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 神經(jīng)形態(tài)芯片可能是革新機(jī)器人實(shí)時(shí)電機(jī)控制的未來
- 從三個(gè)方面理解ARM嵌入式系統(tǒng)
- 自動(dòng)報(bào)警 基于MCU的家庭防盜報(bào)警系統(tǒng)的設(shè)計(jì)
- 存儲(chǔ)控制器及其訪問外設(shè)的原理
- 基于51系列單片機(jī)的智能照明控制系統(tǒng)設(shè)計(jì)方案
- 基于STM32的四旋翼飛行器控制系統(tǒng)
- 單片機(jī)應(yīng)用編程技巧解析
- 基于89C52的教室智能節(jié)能照明系統(tǒng)設(shè)計(jì)
- 一種新型的雨量光照傳感器的設(shè)計(jì)
- AM3G-2412DZ ±12V 3 瓦 DC-DC 轉(zhuǎn)換器的典型應(yīng)用
- 使用 LT3045IDD 并聯(lián)多個(gè)使用 ILIM(電流監(jiān)視器)以消除鎮(zhèn)流電阻壓降的典型應(yīng)用
- LTC1921 在一個(gè) 4 二極管設(shè)計(jì)電路中監(jiān)控卡邊緣的每個(gè)電源
- LT1021BCN8-5 具有升壓輸出電流和電流限制的電壓基準(zhǔn)的典型應(yīng)用
- DC2263A-A,用于 LTC3887EUJ (RSENSE) 雙路 PMBU 降壓轉(zhuǎn)換器的演示板,7V = VIN = 18V,Vout0/Vout1 = 0.8V 至 1.8V @ 25A
- LT3990IMSE-5 2.5V 降壓轉(zhuǎn)換器的典型應(yīng)用
- 使用 ROHM Semiconductor 的 BD4958 的參考設(shè)計(jì)
- TL431 可編程精密基準(zhǔn)電壓源的典型應(yīng)用,用于串聯(lián)通路穩(wěn)壓器的高電流分流穩(wěn)壓器
- 基于VIPer06的12V-4W,115kHz隔離反激
- LTC7813EUH 寬輸入范圍至 10V/10A 低 IQ 級(jí)聯(lián)升壓+降壓穩(wěn)壓器的典型應(yīng)用電路
- ROHM推出“PFC+反激控制參考設(shè)計(jì)”,助力實(shí)現(xiàn)更小巧的電源設(shè)計(jì)!
- 實(shí)現(xiàn)自我溝通和與世界溝通的新方式
- 上汽集團(tuán)將推10萬級(jí)半固態(tài)電池車型
- Bourns 推出其最小封裝尺寸 AEC-Q200 認(rèn)證車規(guī)級(jí)厚膜電阻
- 特斯拉大量使用激光雷達(dá)!
- 為何只有特斯拉采用PC芯片,而其他車企采用手機(jī)級(jí)車規(guī)芯片?
- 孚能科技:全固態(tài)電池進(jìn)入中試生產(chǎn)階段,計(jì)劃年底建成 0.2GWh 中試線
- 三星顯示獲梅賽德斯-邁巴赫S級(jí)48英寸OLED屏幕訂單
- Clearmotion全主動(dòng)懸掛系統(tǒng)將搭載保時(shí)捷,蔚來ET9已應(yīng)用
- R-SARC上車國產(chǎn)車型 京西智行讓智能底盤科技平權(quán)
- STM32cube學(xué)習(xí)筆記(1)
- stm32cube學(xué)習(xí)筆記(2)
- ARM+llinux系統(tǒng)移植3G撥號(hào)上網(wǎng)收發(fā)短信(二)
- 多串口數(shù)據(jù)接收和發(fā)送
- LPC2378串口查詢發(fā)送丟失數(shù)據(jù)的解決
- STM32Cube的串口配置與使用
- keil編譯后load一直是灰色的解決辦法
- KEIL4 工程到 KEIL5 程序的移植方法
- 下載程序時(shí)出現(xiàn)Cannot Load Flash Device Description!情況
- 下載出錯(cuò):Could not stop Cortex-M device!Please check the JTAG cable.