国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【ARM64 常見匯編指令學(xué)習(xí) 21 -- ARM RET 與 ERET】

這篇具有很好參考價值的文章主要介紹了【ARM64 常見匯編指令學(xué)習(xí) 21 -- ARM RET 與 ERET】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


請閱讀【嵌入式開發(fā)學(xué)習(xí)必備專欄 】


ARM RET 與 ERET

在 ARMv8 架構(gòu)中,RET 指令用于從函數(shù)或者過程返回。它主要負(fù)責(zé)從當(dāng)前過程跳轉(zhuǎn)回調(diào)用者,并恢復(fù)調(diào)用者的程序計數(shù)器 (PC) 的值。

語法:

RET {Xn} 

Xn 是一個可選的寄存器,通常為 X30(也稱為 LR,鏈接寄存器),其中包含返回地址。如果沒有指定寄存器,則默認(rèn)為 X30。

工作原理:

  1. Xn(通常是 LR)寄存器中的值加載到程序計數(shù)器 PC 中,從而跳回到調(diào)用過程之后的地址。
  2. 根據(jù)需要更新程序狀態(tài),如堆棧指針 SP 和其他調(diào)用約定相關(guān)的寄存器。

示例:文章來源地址http://www.zghlxwxcb.cn/news/detail-846087.html

func: 
	// 函數(shù)內(nèi)容 
	RET // 返回到調(diào)用者,等同于 RET X30 

another_func: 
	// 另一個函數(shù)內(nèi)容 
	RET X29 // 如果X29寄存器中存放了返回地址,則使用它返回 

ARMv8 ERET 指令

ERET 指令用于從異常返回,特別是從中斷或陷阱處理程序返回到之前的執(zhí)行上下文。ERET 還原 Exception Level (EL) 發(fā)生變化前的程序狀態(tài),它通常在處理操作系統(tǒng)級別的代碼中使用。
語法:

ERET 

ERET 指令沒有操作數(shù)。

工作原理:

  1. ELR_ELx(Exception Link Register)恢復(fù)程序計數(shù)器 PC。
  2. SPSR_ELx(Saved Program Status Register)恢復(fù)程序狀態(tài)寄存器 CPSR(Current Program Status Register),包括標(biāo)志位和執(zhí)行狀態(tài)(例如 ARM 或 Thumb 模式)。

示例:

// 假設(shè)處于異常處理程序內(nèi)部 
// 執(zhí)行 ERET 會返回到觸發(fā)異常的指令之后的程序地址 
	ERET 

RET 與 ERET 的區(qū)別

  • RET 用于標(biāo)準(zhǔn)的函數(shù)返回,而 ERET 用于從異常或中斷處理程序返回。
  • RET 只是簡單地將鏈接寄存器 LR 的值加載到程序計數(shù)器 PC 中,不會改變當(dāng)前的執(zhí)行級別或恢復(fù)程序狀態(tài)。
  • ERET 會加載 ELR_ELx 中的值到 PC,并從 SPSR_ELx 恢復(fù)狀態(tài)寄存器。它會改變處理器的執(zhí)行級別,通常是從更高的異常級別(EL1, EL2, EL3)返回到較低的應(yīng)用級別(EL0)。
  • ERET 是一個更復(fù)雜的指令,它用于在更嚴(yán)格和受控的環(huán)境中切換上下文,如操作系統(tǒng)的中斷處理。

到了這里,關(guān)于【ARM64 常見匯編指令學(xué)習(xí) 21 -- ARM RET 與 ERET】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ARM64 常見匯編指令學(xué)習(xí) 11 -- ARM 匯編宏 .macro 的學(xué)習(xí)

    下篇文章:ARM64 常見匯編指令學(xué)習(xí) 12 – ARM 匯編函數(shù) 的學(xué)習(xí) 上篇文章:ARM64 常見匯編指令學(xué)習(xí) 10 – 無符號位域提取指令 BFXIL 在 ARM 匯編中,“ .macro ” 是用來定義一個宏的指令。宏可以看作是一個可以在匯編程序中重用的代碼段。當(dāng)調(diào)用宏時,匯編器會將宏的內(nèi)容插入到調(diào)

    2024年02月14日
    瀏覽(23)
  • 【ARM64 常見匯編指令學(xué)習(xí) 14 -- ARM 匯編 .balign,.balignw,.balign 偽指令學(xué)習(xí)】

    上篇文章:ARM64 常見匯編指令學(xué)習(xí) 13 – ARM 匯編 ORG 偽指令學(xué)習(xí) 下篇文章:ARM64 常見匯編指令學(xué)習(xí) 15 – ARM 標(biāo)志位的學(xué)習(xí) .balignl 是一個偽操作符,偽操作符的意思就是機(jī)器碼里,并沒有一個匯編指令與其對應(yīng),是編譯器來實現(xiàn)其功能的。. balignl 是 .balign 的變體。 .balignl 完整

    2024年02月14日
    瀏覽(49)
  • 【ARM64 常見匯編指令學(xué)習(xí) 20 -- ARM 指令 .include與 .asciz 詳細(xì)介紹】

    在 ARM 匯編語言中, .include 命令用于插入另一個源文件的內(nèi)容。它的作用類似于 C 語言中的 #include 預(yù)處理命令。這個命令通常在源文件的頂部使用,但也可以在任何地方使用。 語法如下: 這里的 \\\"filename\\\" 是你想要包含的文件名。這個文件名可以是絕對路徑,也可以是相對于

    2024年02月11日
    瀏覽(53)
  • 【ARM 常見匯編指令學(xué)習(xí) 3 -- ARM64 無符號位域提取指令 UBFX】

    上篇文章:ARM 常見匯編指令學(xué)習(xí) 2 – 存儲指令 STP 與 LDP 下篇文章:ARM 常見匯編指令學(xué)習(xí) 4 – ARM64 比較指令 cbnz 與 b.ne 區(qū)別 在代碼中如何監(jiān)控寄存器的某1bit, 或者某幾bit ? ARM 提供了一個匯編指令:UBFX 就可以用于該功能。 UBFX 有2種語法分別是對32bit 寄存器和64bit寄存器。

    2024年02月15日
    瀏覽(18)
  • 【ARM 常見匯編指令學(xué)習(xí) 4 -- ARM64 比較指令 cbnz 與 b.ne 區(qū)別】

    上篇文章:ARM 常見匯編指令學(xué)習(xí) 3 – ARM64 無符號位域提取指令 UBFX 下篇文章:ARM 常見匯編指令學(xué)習(xí) 5 – arm64匯編指令 wzr 和 xzr B.NE 指令格式 B.NE指令的含義是:如果上一個指令的結(jié)果不等于零(即條件標(biāo)志位Z為0),那么跳轉(zhuǎn)到指定的地址。如果結(jié)果等于零,則繼續(xù)執(zhí)行下一

    2024年02月14日
    瀏覽(70)
  • 【ARM 常見匯編指令學(xué)習(xí) 2 -- 存儲指令 STP 與 LDP】

    上篇文章:ARM 常見匯編指令學(xué)習(xí) 1 – 跳轉(zhuǎn)指令 BL 與 BLR 區(qū)別 下篇文章:ARM 常見匯編指令學(xué)習(xí) 3 – ARM64 無符號位域提取指令 UBFX 在 ARMv8 架構(gòu)中,STP指令用于將兩個通用寄存器的值存儲到內(nèi)存中。STP指令的語法如下: 或 其中: Wt1 和 Wt2 表示兩個要存儲的32位通用寄存器, Xt

    2024年02月09日
    瀏覽(22)
  • ARM 常見匯編指令學(xué)習(xí) 9 - 緩存管理指令 DC 與 IC

    ARM 常見匯編指令學(xué)習(xí) 9 - 緩存管理指令 DC 與 IC

    上篇文章:ARM 常見匯編指令學(xué)習(xí) 8 - dsb sy 指令及 dsb 參數(shù)介紹 AArch64指令集中有兩條關(guān)于緩存維護(hù)(cache maintenance)的指令,分別是IC和DC。 IC 是用于 指令緩存 操作; DC 是用于 數(shù)據(jù)緩存 操作。 IC 和DC指令都屬于系統(tǒng)指令(system instruction), 系統(tǒng)指令 還包括 AT,BRB,CFP,CP

    2024年02月14日
    瀏覽(24)
  • 【ARM 常見匯編指令學(xué)習(xí) 1 -- 跳轉(zhuǎn)指令 BL 與 BLR 區(qū)別】

    下篇文章:ARM 常見匯編指令學(xué)習(xí) 2 – 存儲指令 STP 與 LDP ARM 中跳轉(zhuǎn)指令主要分為無條件跳轉(zhuǎn)和有條件跳轉(zhuǎn),有條件跳轉(zhuǎn)是一種根據(jù)特定條件進(jìn)行跳轉(zhuǎn)的指令。它會根據(jù)條件碼寄存器(Condition Code Register)中的狀態(tài),判斷是否滿足特定條件,然后根據(jù)條件的結(jié)果決定是否進(jìn)行跳

    2024年02月07日
    瀏覽(20)
  • 【ARM 常見匯編指令學(xué)習(xí) 8 - dsb sy 指令及 dsb 參數(shù)介紹】

    上篇文章:ARM 常見匯編指令學(xué)習(xí) 7 - LDR 指令與LDR偽指令及 mov指令 下篇文章:ARM 常見匯編指令學(xué)習(xí) 9 - 緩存管理指令 DC 與 IC 數(shù)據(jù)同步屏障是一種特殊類型的內(nèi)存屏障。 只有當(dāng)DSB指令執(zhí)行完畢后,才會執(zhí)行程序中位于此指令后的指令。 當(dāng)滿足以下條件時,此指令才會完成:

    2024年02月09日
    瀏覽(43)
  • 【ARM 常見匯編指令學(xué)習(xí) 7 - LDR 指令與LDR偽指令及 mov指令】

    上篇文章:ARM 常見匯編指令學(xué)習(xí) 6 - bic(位清除), orr(位或), eor(異或) 下篇文章:ARM 常見匯編指令學(xué)習(xí) 8 - dsb sy 指令及 dsb 參數(shù)介紹 LDR指令 與 LDR偽指令 兩者雖然名字相同但是作用卻不相同,區(qū)分兩者的方法就是看第二個參數(shù),如果有等號,就是LDR偽指令。 LDR 指令 上面語句的

    2024年02月14日
    瀏覽(79)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包