女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文看懂LR寄存器的知識(shí)

UtFs_Zlgmcu7890 ? 來(lái)源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2017-10-31 06:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

不知你在DEBUG程序,又或者閱讀操作系統(tǒng)源碼時(shí)候有沒(méi)細(xì)心觀察,從一個(gè)普通子函數(shù)返回與異常(中斷)返回的匯編指令都是BX LR,但是這兩者的意義是一樣的嗎?這篇文章就來(lái)揭開(kāi)LR寄存器的神秘面紗。

當(dāng)單片機(jī)涉及函數(shù)跳轉(zhuǎn)或者任務(wù)調(diào)度的時(shí)候,理解MCU如何處理堆棧與改變各個(gè)通用寄存器的狀態(tài)尤為重要,下面就來(lái)比較一下在不同情況下LR寄存器的意義。

上圖是一個(gè)簡(jiǎn)單的例子,當(dāng)仿真點(diǎn)擊“下一步”的時(shí)候,MCU就會(huì)執(zhí)行BX LR指令,并且從aa子函數(shù)返回到main函數(shù)中,可以看到在普通子函數(shù)里執(zhí)行BX LR的意義是“跳轉(zhuǎn)到LR寄存器里的地址執(zhí)行”。

對(duì)比一下一段ucos的源碼,如果對(duì)M3內(nèi)核有所了解的小伙伴一定知道堆棧為什么是這樣定義的,那么這時(shí)候我們發(fā)現(xiàn)OS_TaskReturn是作為一個(gè)錯(cuò)誤返回函數(shù),并且賦值到堆棧中R14(LR)相應(yīng)的位置。

任務(wù)調(diào)度函數(shù)會(huì)將PSP堆棧指針指向我們定義自定義的堆棧,然后最后一句匯編是BX LR,那么按照普通子函數(shù)執(zhí)行BX LR的意義,這個(gè)時(shí)候MCU是會(huì)運(yùn)行OS_TaskReturn這個(gè)函數(shù)嗎?這樣不就進(jìn)入錯(cuò)誤函數(shù)了嗎?

其實(shí)不然,因?yàn)橛肕系列實(shí)現(xiàn)ucos的任務(wù)調(diào)度是在PendSV異常(中斷)里面實(shí)現(xiàn)的,而在異常(中斷)里的LR寄存器不再是普通函數(shù)里面“返回地址”的意義,而是一個(gè)定義為一個(gè)稱作exc-return的值,當(dāng)執(zhí)行BX LR時(shí)候,這個(gè)值決定了MCU退出異常(中斷)之后的運(yùn)行等級(jí)是在特權(quán)級(jí)還是用戶級(jí)以及用的堆棧是MSP還是PSP,而MCU即將要執(zhí)行的是從PSP堆棧中POP出來(lái)的p_task函數(shù),而不是OS_TaskReturn函數(shù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:神秘的LR寄存器

文章出處:【微信號(hào):Zlgmcu7890,微信公眾號(hào):周立功單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    解析Matlab如何實(shí)現(xiàn)移位寄存器

    本文主要介紹Matlab如何實(shí)現(xiàn)移位寄存器,首先介紹的是移位寄存器的原理及作用,其次介紹了m序列的生成原理及m序列的matlab 仿真實(shí)現(xiàn),最后介紹了Matlab如何實(shí)現(xiàn)移位寄存器的代碼。
    的頭像 發(fā)表于 04-26 09:28 ?1.7w次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>解析Matlab如何實(shí)現(xiàn)移位<b class='flag-5'>寄存器</b>

    ARM開(kāi)發(fā)中幾個(gè)常見(jiàn)的寄存器詳解

    筆者今天來(lái)聊聊對(duì)于ARM幾個(gè)特殊寄存器的理解,F(xiàn)P、SP和LR
    發(fā)表于 11-22 09:02 ?5096次閱讀

    寄存器是什么?怎么操作寄存器點(diǎn)亮LED燈?

    寄存器,是集成電路中非常重要的種存儲(chǔ)單元,通常由觸發(fā)組成。在集成電路設(shè)計(jì)中,寄存器可分為電路內(nèi)部使用的寄存器和充當(dāng)內(nèi)外部接口的
    的頭像 發(fā)表于 07-21 16:59 ?4574次閱讀
    <b class='flag-5'>寄存器</b>是什么?怎么操作<b class='flag-5'>寄存器</b>點(diǎn)亮LED燈?

    lr寄存器

    連接寄存器(Link Register, LR),在ARM體系結(jié)構(gòu)中LR的特殊用途有兩種:是用來(lái)保存子程序返回地址;二是當(dāng)異常發(fā)生時(shí),LR
    發(fā)表于 01-27 14:21

    寄存器與移位寄存器

    寄存器與移位寄存器 寄存器是用來(lái)寄存數(shù)碼的邏輯部件,所以必須具備接收和寄存數(shù)碼的功能。任何
    發(fā)表于 03-12 15:19 ?59次下載

    寄存器,寄存器是什么意思

    寄存器,寄存器是什么意思 寄存器定義  寄存器是中央處理內(nèi)的組成部分。寄存器是有限存貯容量
    發(fā)表于 03-08 14:26 ?2.2w次閱讀

    數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是什么意思

    數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是什么意思 數(shù)據(jù)寄存器數(shù)據(jù)寄存器包括累加AX、基址寄存器BX、計(jì)數(shù)
    發(fā)表于 03-08 14:38 ?1.3w次閱讀

    移位寄存器,移位寄存器是什么意思

    移位寄存器,移位寄存器是什么意思 移位寄存器_
    發(fā)表于 03-08 14:50 ?1.8w次閱讀

    寄存器與移位寄存器

    寄存器與移位寄存器:介紹寄存器原理和移位寄存器的原理及實(shí)現(xiàn)。
    發(fā)表于 05-20 11:47 ?0次下載

    看懂暫存寄存器的區(qū)別

    本文開(kāi)始介紹了暫存的定義和結(jié)構(gòu)組成,其次介紹了暫存分類與寄存器定義,最后介紹了寄存器的原理。
    發(fā)表于 04-11 09:30 ?1.7w次閱讀

    看懂8086CPU寄存器的特點(diǎn)和作用

    8086有14個(gè)16位寄存器,這14個(gè)寄存器按其用途可分為通用寄存器、指令指針、標(biāo)志寄存器和段寄存器等4類。下面就來(lái)看看這四個(gè)
    發(fā)表于 04-16 11:36 ?1.1w次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>看懂</b>8086CPU<b class='flag-5'>寄存器</b>的特點(diǎn)和作用

    工業(yè)機(jī)器人FANUC數(shù)據(jù)位置寄存器和位置寄存器的運(yùn)用小知識(shí)分享

    工業(yè)機(jī)器人FANUC數(shù)據(jù)位置寄存器和位置寄存器的運(yùn)用 寄存器指令 Registers① 寄存器指令R[i] i=1~200② 位置
    的頭像 發(fā)表于 06-22 10:08 ?3.5w次閱讀
    工業(yè)機(jī)器人FANUC數(shù)據(jù)位置<b class='flag-5'>寄存器</b>和位置<b class='flag-5'>寄存器</b>的運(yùn)用小<b class='flag-5'>知識(shí)</b>分享

    了解MIPS的寄存器

    MIPS 有32個(gè)寄存器(0~31), 每個(gè)寄存器各有不同的用途。
    的頭像 發(fā)表于 06-23 08:59 ?8219次閱讀

    寄存器的基本知識(shí)

    幾乎我們?cè)O(shè)計(jì)的每個(gè)模塊都會(huì)有寄存器,而它們的寄存器或多或少能被CPU訪問(wèn)到。但CPU的接口通常只有組總線去訪問(wèn)這些模塊,所以設(shè)計(jì)上都會(huì)把CPU和各個(gè)模塊掛到總線上。這樣CPU作為Master就能夠訪問(wèn)到所有的模塊了。
    的頭像 發(fā)表于 07-26 13:52 ?1.1w次閱讀

    寄存器分為基本寄存器和什么兩種

    寄存器是計(jì)算機(jī)中用于存儲(chǔ)數(shù)據(jù)的高速存儲(chǔ)單元,它們是CPU內(nèi)部的重要組成部分。寄存器可以分為基本寄存器和擴(kuò)展寄存器兩種類型。 、基本
    的頭像 發(fā)表于 07-12 10:31 ?2262次閱讀