全球快看:[ARM 匯編]進(jìn)階篇—存儲(chǔ)訪問指令—2.3.3 棧操作指令
棧是一種特殊的數(shù)據(jù)結(jié)構(gòu),其特點(diǎn)是后進(jìn)先出(LIFO,Last In First Out)。在 ARM 匯編中,棧通常用于保存函數(shù)調(diào)用時(shí)的寄存器狀態(tài)、局部變量和返回地址等。本節(jié)將詳細(xì)介紹 ARM 匯編中的棧操作指令,并通過實(shí)例幫助你更好地理解和掌握這些指令。
推入棧(PUSH)PUSH 指令用于將一個(gè)或多個(gè)寄存器的值推入棧中?;菊Z法如下:
(相關(guān)資料圖)
PUSH {reglist}
其中,reglist 是要推入棧的寄存器列表。
示例:
PUSH {R0-R3} ; 將寄存器 R0-R3 的值推入棧中
在這個(gè)示例中,PUSH 指令將寄存器 R0-R3 的值推入棧中。注意,ARM 匯編中的棧默認(rèn)使用降序(Full Descending)模式,即棧頂指針指向棧的最高地址,每次入棧操作時(shí),棧頂指針向低地址方向移動(dòng)。棧頂指針通常使用 R13(也稱為 SP,Stack Pointer)寄存器。
彈出棧(POP)POP 指令用于從棧中彈出一個(gè)或多個(gè)寄存器的值?;菊Z法如下:
POP {reglist}
其中,reglist 是要從棧中彈出的寄存器列表。
示例:
POP {R0-R3} ; 從棧中彈出值到寄存器 R0-R3
在這個(gè)示例中,POP 指令從棧中彈出值到寄存器 R0-R3。每次出棧操作時(shí),棧頂指針向高地址方向移動(dòng)。
以下是一個(gè)簡(jiǎn)單的示例,演示如何使用 PUSH 和 POP 指令保存和恢復(fù)寄存器狀態(tài):
; 假設(shè)在調(diào)用一個(gè)函數(shù)前,需要保存 R0-R3 寄存器的值PUSH {R0-R3} ; 將寄存器 R0-R3 的值推入棧中; 調(diào)用函數(shù)BL some_function; 在函數(shù)返回后,恢復(fù) R0-R3 寄存器的值POP {R0-R3}
在這個(gè)示例中,我們首先使用 PUSH 指令將寄存器 R0-R3 的值保存到棧中,然后調(diào)用一個(gè)函數(shù)。在函數(shù)返回后,我們使用 POP 指令恢復(fù) R0-R3 寄存器的值。這樣,我們可以確保在調(diào)用函數(shù)前后,寄存器的值不會(huì)被修改。
在實(shí)際編程中,你可能需要根據(jù)具體需求使用 PUSH 和 POP 指令保存和恢復(fù)寄存器狀態(tài)。通過多加練習(xí)和實(shí)踐,你將更加熟練地掌握這些指令的使用。
現(xiàn)在讓我們?cè)倏匆粋€(gè)稍微復(fù)雜一點(diǎn)的例子,演示如何使用棧保存函數(shù)調(diào)用時(shí)的局部變量和返回地址:
假設(shè)我們有一個(gè)名為sum
的函數(shù),該函數(shù)計(jì)算兩個(gè)整數(shù)的和。我們將使用 R0 和 R1 寄存器傳遞參數(shù),將結(jié)果存儲(chǔ)在 R0 寄存器中。在sum
函數(shù)內(nèi)部,我們將使用 R4 作為局部變量。
; 調(diào)用 sum 函數(shù)的代碼MOV R0, #5 ; 第一個(gè)參數(shù):5MOV R1, #3 ; 第二個(gè)參數(shù):3BL sum ; 調(diào)用 sum 函數(shù); 此時(shí) R0寄存器中存儲(chǔ)著兩個(gè)數(shù)的和; sum 函數(shù)的實(shí)現(xiàn)sum:; 保存寄存器狀態(tài)PUSH {R0-R3, R4, LR} ; 保存 R0-R3, R4 寄存器和返回地址(Link Register,LR); 計(jì)算兩個(gè)數(shù)的和MOV R4, R0 ; 將 R0 的值(第一個(gè)參數(shù))復(fù)制到 R4 寄存器ADD R0, R4, R1 ; 將 R4 和 R1 的值相加,并將結(jié)果存儲(chǔ)在 R0 寄存器中; 恢復(fù)寄存器狀態(tài)POP {R0-R3, R4, LR} ; 從棧中彈出值到 R0-R3, R4 寄存器和返回地址(Link Register,LR); 返回BX LR ; 使用 BX 指令跳轉(zhuǎn)到 LR 寄存器存儲(chǔ)的返回地址
在這個(gè)例子中,我們首先使用 PUSH 指令保存寄存器 R0-R3、R4 和返回地址(Link Register,LR)。然后我們計(jì)算兩個(gè)數(shù)的和,并將結(jié)果存儲(chǔ)在 R0 寄存器中。最后,我們使用 POP 指令恢復(fù)寄存器狀態(tài),并使用 BX 指令跳轉(zhuǎn)到 LR 寄存器存儲(chǔ)的返回地址。
通過這個(gè)示例,你應(yīng)該能更好地理解如何使用棧操作指令保存和恢復(fù)寄存器狀態(tài)、局部變量和返回地址。在實(shí)際編程中,你可能需要根據(jù)具體需求使用這些指令。通過多加練習(xí)和實(shí)踐,你將更加熟練地掌握這些指令的使用。
總結(jié)一下,ARM 匯編中的棧操作主要包括 PUSH 和 POP 指令,用于保存和恢復(fù)寄存器狀態(tài)、局部變量和返回地址。希望這些示例能幫助你更好地理解和掌握這些指令。在實(shí)際編程中,你需要根據(jù)具體需求靈活運(yùn)用這些知識(shí)。繼續(xù)加油,你已經(jīng)在成為一名高級(jí) ARM 匯編程序員的道路上邁出了堅(jiān)實(shí)的一步!推薦閱讀:
https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA
https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g
標(biāo)簽:
搶先讀
- 舞臺(tái)開始搭建,他們要給內(nèi)江市民帶來一場(chǎng)難忘的視聽盛宴——
- 京東招聘Android工程師
- 女性成為露營(yíng)地消費(fèi)主力 世界關(guān)注
- 常規(guī)賽種子名單公布,國(guó)乒00后居5號(hào)種子,埃及女單意外占2席
- 【環(huán)球速看料】很“粽”意!瞧,萌獸們吃上了粽子大餐
- 【全球聚看點(diǎn)】微波爐可以煮土豆粉么 微波爐是否可以煮土豆粉
- 短訊!新冠康復(fù)如何做到清淡飲食 新冠康復(fù)者如何保養(yǎng)
- 世界要聞:亞運(yùn)會(huì)的運(yùn)動(dòng)員村什么樣?先睹為快→
- 全球快看:[ARM 匯編]進(jìn)階篇—存儲(chǔ)訪問指令—2.3.3 棧操作指令
- 環(huán)球快資訊丨16日北京將迎本輪高溫峰值 最高氣溫預(yù)計(jì)39℃
- 凱美特氣(002549.SZ)部分股東完成減持2.24%股份-世界今熱點(diǎn)
- 標(biāo)致雪鐵龍整合,神龍汽車拼死一戰(zhàn)-滾動(dòng)
- 1996年,一名靚麗女毒販被公開審判的場(chǎng)景,鏡頭下茫然的望向遠(yuǎn)方 世界最資訊
- 美國(guó)國(guó)務(wù)卿布林肯將訪華
- 農(nóng)村適合種什么藥材 農(nóng)村種植哪些藥材收益高_(dá)環(huán)球聚看點(diǎn)
- 天天微速訊:粗心大意的近義詞的反義詞_粗心大意的近義詞
- 抽地下水制成“能量水”號(hào)稱能治病,老人買百瓶被騙15萬_焦點(diǎn)消息
- 如何免費(fèi)將pdf轉(zhuǎn)換成word文檔-今日看點(diǎn)
- 紅芭樂怎么吃好吃(紅芭樂吃了有什么效果)
- 蘇翊鳴保送清華,鄭欽文成為李娜學(xué)妹,王哲林張鎮(zhèn)麟無緣上海交大|全球新要聞
- 文末有獎(jiǎng)丨臺(tái)積電三巨頭下周齊聚上海
- 焦點(diǎn)訊息:江西養(yǎng)老金每月能漲多少錢2023?2023年江西養(yǎng)老金調(diào)整方案細(xì)則預(yù)估
- 環(huán)球今日訊!每經(jīng)專訪中國(guó)科學(xué)技術(shù)大學(xué)張衛(wèi)明教授:做好科普,讓大眾了解深度偽造技術(shù)的存在,預(yù)防傳統(tǒng)電詐的手段就能有效預(yù)防AI詐騙
- 18家AI頭部企業(yè)、高校與科研機(jī)構(gòu)聯(lián)合發(fā)布首個(gè)AI框架生態(tài)倡議
- 當(dāng)前關(guān)注:山河智能(002097):6月16日北向資金增持15.17萬股
- 融資買入和普通買入的區(qū)別 主要是這幾點(diǎn) 當(dāng)前熱議
- “五五購(gòu)物節(jié)”火熱進(jìn)行中,活動(dòng)豐富、優(yōu)惠多多
- 世界滾動(dòng):四大期指16日收盤集體上漲
- 再度領(lǐng)先!蛇口產(chǎn)園REIT擴(kuò)募順利上市
- 梔子花開花后怎么養(yǎng)才不香 梔子花開花后如何養(yǎng)殖
- 河南安陽:大山里的幸福“醫(yī)”靠
- 世界時(shí)訊:誤食重金屬的癥狀_誤食重金屬后應(yīng)服用什么來緩解病情
- 全球新資訊:支付寶小程序云正式上線
- 福建廣生堂藥業(yè)股份有限公司成為鹽酸達(dá)泊西汀片上市許可持有人
- 厲兵秣馬護(hù)平安! 信陽市公安局開展全警實(shí)戰(zhàn)練兵考核比武工作
- 環(huán)球看點(diǎn)!港股股票回購(gòu)一覽:22只個(gè)股獲公司回購(gòu)
- 融通財(cái)險(xiǎn)亮出首份成績(jī)單:2022年凈利潤(rùn)0.16億元 總資產(chǎn)35.28億 焦點(diǎn)播報(bào)
- 安徽6月17日進(jìn)入梅雨期:較常年偏晚2天
- 岳云鵬、大張偉、李雪琴齊聚《開工!喜劇之夜》,快手聯(lián)合打造年度喜劇盛宴
- 64%!二手車金融滲透率太樂觀
- 張藝謀妻子陳婷個(gè)人資料照片(張藝謀為什么會(huì)看上陳婷) 世界熱點(diǎn)
- 炒熟的核桃有營(yíng)養(yǎng)嗎 核桃炒熟了還有營(yíng)養(yǎng)嗎-世界即時(shí)看
- 交易員看衰全球經(jīng)濟(jì)和需求端 原油易跌難漲
- 首屆北京市林業(yè)有害生物防治員職業(yè)技能大賽舉行
- 牛年已過迎接虎年文案(優(yōu)秀4篇)
- 中華田園犬的特點(diǎn)和性格(中華田園犬為什么那么好養(yǎng))
- TA:坎塞洛曾被推薦給皇馬,但因?yàn)樾剿?、年齡等關(guān)系遭拒絕
- 每日信息:美國(guó)5000億芯片巨頭宣布:將對(duì)西安投資超43億元!此前未通過我國(guó)審查,產(chǎn)品影響國(guó)家安全
- 恒順醋業(yè):6月15日召開業(yè)績(jī)說明會(huì),投資者參與
- 剛剛,2023年5月財(cái)政收支情況公布|世界速遞
- 金庸小說里的大俠為什么都在報(bào)“殺父之仇”?|父親節(jié)特輯
- “治”出美麗新家園!增城實(shí)現(xiàn)自然村農(nóng)村生活污水收集和治理全覆蓋
- 2023年杭州余杭區(qū)第一期公租房實(shí)物配租規(guī)則
- 訊飛星火 App上線蘋果iOS平臺(tái),須獲取內(nèi)測(cè)資格后使用-世界看點(diǎn)
- 借主營(yíng)業(yè)務(wù)成本貸應(yīng)付賬款合法嗎_借主營(yíng)業(yè)務(wù)成本貸應(yīng)付賬款
- 【世界播資訊】肉煮久了還有營(yíng)養(yǎng)嗎 肉煮久了還能不能有營(yíng)養(yǎng)
- 全新高通智能視頻協(xié)作平臺(tái)套件具備豐富AI特性,支持Android和Linux-環(huán)球快看
- 當(dāng)前快報(bào):2023年9月全國(guó)計(jì)算機(jī)等級(jí)考試報(bào)名將于6月26日開始
- 國(guó)足勝緬甸,不是聊勝于無,而是不值得一提,只能說國(guó)足是自降身份降維打擊了|消息
- 《中國(guó)式現(xiàn)代化論綱》多語種版權(quán)輸出簽約儀式在京舉行
- 茉莉開花后怎么養(yǎng) 茉莉花開花期間怎么養(yǎng)護(hù)?
- 京媒名記:再給1次機(jī)會(huì),小球迷還會(huì)擁抱梅西!年輕人瘋狂+可愛-天天觀察
- 浙江錢江灣區(qū)投資4億元私募獲上交所受理|觀察
- 薏米禁忌與什么一起吃 薏米和哪些食物有食用禁忌呢_環(huán)球頭條
- 菲律賓馬榮火山活動(dòng)加劇 存在大規(guī)模噴發(fā)可能
- 孔雀開花后怎么養(yǎng) 孔雀尾花如何養(yǎng)殖
- 環(huán)球今亮點(diǎn)!小城轉(zhuǎn)型:人口小縣試點(diǎn)機(jī)構(gòu)整合 收縮型城市撤街設(shè)鎮(zhèn)
- 劍裝災(zāi)厄高達(dá)圖片(劍裝災(zāi)厄高達(dá))
- 山東整形醫(yī)院排名前三的 韓美等醫(yī)院上榜 環(huán)球消息
- 焦點(diǎn)熱文:開工令什么意思_開工令的前提條件是什么
- 世界頭條:11月給住校女朋友送禮物
- 老式防盜門鎖怎么更換(老式防盜門鎖怎么換鎖芯)
- 每日消息!【新華500】新華500指數(shù)(989001)16日漲0.96%
- 中山三鄉(xiāng)文創(chuàng)產(chǎn)品可自助購(gòu)買!首期推出了5部自助售賣機(jī),位置在→
- 世界快看:只要彼此愛過一次朗誦_只要彼此愛過一次
- 本川智能:公司光模塊相關(guān)產(chǎn)品已量產(chǎn)交貨
- 興化股份(002109):6月16日北向資金增持1.2萬股
- 新動(dòng)態(tài):AG超玩會(huì)首戰(zhàn)零封TES,cat與極光配合完美,一諾尷尬了
- 愛自拍的人心理分析(愛自拍)
- 中國(guó)大巴山(重慶·城口)消夏康養(yǎng)季6月21日啟動(dòng)
- excel索引圖片_excel索引 最新資訊
- 概念動(dòng)態(tài)|恒勃股份新增“注冊(cè)制次新股”概念_環(huán)球微資訊
- 當(dāng)前消息!接待人數(shù)創(chuàng)歷史新高!廣州蔬菜新品種展示推廣會(huì)落幕
- 鋯鈮合金股骨頭獲批上市 焦點(diǎn)速看
- 2023城鎮(zhèn)職工醫(yī)保報(bào)銷流程是什么-當(dāng)前看點(diǎn)
- 世界熱資訊!基本確定!詹姆斯明夏離開湖人,布朗尼引哄搶,美媒:他才是狀元
- 娃哈哈乳酸菌有營(yíng)養(yǎng)嗎 娃哈哈乳酸菌是否有營(yíng)養(yǎng)-環(huán)球速讀
- 港股行情復(fù)盤:港股三大指數(shù)齊漲。恒指收漲1.07%,報(bào)20040.37點(diǎn)
- 全球熱消息:阜陽大學(xué)官網(wǎng)首頁_阜陽大學(xué)
- 微資訊!感恩父親節(jié)--安陽市龍安區(qū)實(shí)驗(yàn)幼兒園父親節(jié)主題活動(dòng)
- 貴陽首美整形醫(yī)院怎么樣 醫(yī)院真實(shí)案例分享
- 【消息】河南省造紙行業(yè)2022年運(yùn)行概況及2023年展望 要聞
- “天下不敢小聊城”:高鐵時(shí)代“兩河明珠”
- 5月銀行結(jié)售匯順差33億美元 如何影響人民幣匯率走勢(shì)?
- 今年阿克蘇地區(qū)累計(jì)發(fā)行地方政府再融資債券11.6億元
- 全球今日訊!順藤摸瓜的意思和含義_順藤摸瓜的意思
- 國(guó)家發(fā)改委:加快向民營(yíng)企業(yè)開放國(guó)家重大科研基礎(chǔ)設(shè)施 視訊
- 中文學(xué)校是座橋 焦點(diǎn)速遞
- 前沿?zé)狳c(diǎn):CBRE嚴(yán)思慧:相比北上深,廣州商業(yè)物業(yè)市場(chǎng)仍是“藍(lán)?!?/a>
- 水晶光電(002273):6月16日北向資金減持17.68萬股