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