久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4423|回復(fù): 14
打印 上一主題 下一主題
收起左側(cè)

stm32單片機怎樣在運行時獲取lr寄存器的值,開發(fā)環(huán)境使用keil5

[復(fù)制鏈接]
回帖獎勵 100 黑幣 回復(fù)本帖可獲得 10 黑幣獎勵! 每人限 1 次
跳轉(zhuǎn)到指定樓層
樓主
ID:248705 發(fā)表于 2022-6-10 22:29 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
如題,我想在運行時獲取lr寄存器,用來記錄函數(shù)調(diào)用棧,但是用了很多方法都不可以,我嘗試了如下方法:
方法1如下,此種方法keil可以編譯通過,但是無法正確獲取lr寄存器(或許是因為發(fā)生了跳轉(zhuǎn),lr被覆蓋):
static inline __asm uint32_t readlr(void)
{
        MOV     R0, lr
        bx lr
}


方法2如下(gcc的內(nèi)聯(lián)匯編),此種方法gcc下可以編譯通過,但keil下不行,lr寄存器未定義:
__asm volatile ("mov %0,lr":"=r"(return_addr));

方法3如下,keil下編譯會提示找不到lr寄存器未定義:
__asm        {
               
                }

大佬們求助哇!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:979299 發(fā)表于 2022-6-11 11:42 | 只看該作者
看起來好厲害的樣子,C語言調(diào)用匯編語言
回復(fù)

使用道具 舉報

板凳
ID:301191 發(fā)表于 2022-6-16 02:27 | 只看該作者
頂一下
回復(fù)

使用道具 舉報

地板
ID:844772 發(fā)表于 2022-6-16 09:01 | 只看該作者
沒看懂你的意思,lr記錄的是函數(shù)返回后,給pc用的下一條地址,不是函數(shù)地址啊。bx  lr 也不大對啊,是不是bx R0做強制跳轉(zhuǎn)啊或者MOV PC LR做程序調(diào)用返回?
回復(fù)

使用道具 舉報

5#
ID:248705 發(fā)表于 2022-6-23 12:16 | 只看該作者
glinfei 發(fā)表于 2022-6-16 09:01
沒看懂你的意思,lr記錄的是函數(shù)返回后,給pc用的下一條地址,不是函數(shù)地址啊。bx  lr 也不大對啊,是不是b ...

我理解你的意思,上面那段代碼無論是bx r0 還是bx lr其實不重要,lr的值已經(jīng)修改了,我是想寫一個內(nèi)存管理的debug,每次malloc都能夠記錄從哪里發(fā)生的調(diào)用,現(xiàn)在gcc下面能正常記錄,keil下已經(jīng)放棄了
回復(fù)

使用道具 舉報

6#
ID:248705 發(fā)表于 2022-6-23 12:17 | 只看該作者
回復(fù)

使用道具 舉報

7#
ID:248705 發(fā)表于 2022-6-23 12:18 | 只看該作者
興安xa 發(fā)表于 2022-6-11 11:42
看起來好厲害的樣子,C語言調(diào)用匯編語言

大部分鏈接器都支持的
回復(fù)

使用道具 舉報

8#
ID:532541 發(fā)表于 2022-6-24 08:38 | 只看該作者

LR就是R14可以keil在寄存器中看到,調(diào)試時,單步或斷的停下后觀察R14的值就可以。
回復(fù)

使用道具 舉報

9#
ID:844772 發(fā)表于 2022-6-24 15:19 | 只看該作者
祖國的花朵 發(fā)表于 2022-6-23 12:16
我理解你的意思,上面那段代碼無論是bx r0 還是bx lr其實不重要,lr的值已經(jīng)修改了,我是想寫一個內(nèi)存管 ...

你是用第二種方法,用gcc編譯的吧?學(xué)到了,謝謝。 我覺得gcc的庫內(nèi)容多,沒有針對單片機優(yōu)化,反而支持這種方法了。
回復(fù)

使用道具 舉報

10#
ID:248705 發(fā)表于 2022-7-27 10:57 | 只看該作者
glinfei 發(fā)表于 2022-6-24 15:19
你是用第二種方法,用gcc編譯的吧?學(xué)到了,謝謝。 我覺得gcc的庫內(nèi)容多,沒有針對單片機優(yōu)化,反而支持 ...

確實如此,感覺gcc開源的緣故各種花樣挺多,問題也挺多,現(xiàn)在用的libc庫發(fā)現(xiàn)這東西malloc可以直接把內(nèi)存干穿- -,不像keil那樣可以設(shè)置堆棧尺寸
回復(fù)

使用道具 舉報

11#
ID:401564 發(fā)表于 2022-7-28 09:07 | 只看該作者
這都一個多月了,還在折騰這個?
我不太理解,為什么用STM32還相著嵌入?yún)R編,連8051匯編用的人都不多了
STM32不是這個庫就是那個庫的,只能說各有缺點,但做項目都是可以的
還走回頭路去想著看哪個寄存器什么的,如果不是有著極致的要求,那就是沒事找事
回復(fù)

使用道具 舉報

12#
ID:799053 發(fā)表于 2022-7-28 09:38 | 只看該作者
編譯器側(cè)重點不同,keil 有些設(shè)計很合理,設(shè)置很麻煩。
回復(fù)

使用道具 舉報

13#
ID:248705 發(fā)表于 2022-7-28 11:27 | 只看該作者
Y_G_G 發(fā)表于 2022-7-28 09:07
這都一個多月了,還在折騰這個?
我不太理解,為什么用STM32還相著嵌入?yún)R編,連8051匯編用的人都不多了
STM32 ...

也算是學(xué)習(xí)嘛,之前做公司的一個屎山項目,整個工程很大,動態(tài)內(nèi)存用的非常多,不是這里泄露就是那里泄露,有的時候知道是泄露了,但是又找不到在哪,所以想著弄一個可以追蹤malloc調(diào)用的組件
回復(fù)

使用道具 舉報

14#
無效樓層,該帖已經(jīng)被刪除
15#
ID:401564 發(fā)表于 2022-7-28 17:47 | 只看該作者
祖國的花朵 發(fā)表于 2022-7-28 11:27
也算是學(xué)習(xí)嘛,之前做公司的一個屎山項目,整個工程很大,動態(tài)內(nèi)存用的非常多,不是這里泄露就是那里泄露 ...

STM32內(nèi)存這方面我還沒有真正的去做過,因為我涉及的項目對于STM32來說,資源簡單不要太豐富,所以,也沒有真正的去實踐過
但我覺得不應(yīng)該是去走回頭路,STM那么龐大的硬件,我不認為就單單看個LR寄存器就能解決問題的
更應(yīng)該是C代碼的優(yōu)化
回復(fù)

使用道具 舉報

16#
ID:1040924 發(fā)表于 2022-7-29 13:24 | 只看該作者
現(xiàn)在都已經(jīng)這么高深了嗎
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: a欧美 | 亚洲精品一区在线观看 | 超碰在线免费公开 | 久久国产精品一区二区 | 久久久久91 | 国产一区二区精品 | 狠狠操狠狠操 | 亚洲欧美日韩久久久 | 久久久久免费精品国产小说色大师 | 欧美寡妇偷汉性猛交 | 日本精品久久久一区二区三区 | 久精品视频 | www97影院 | 丝袜毛片 | www亚洲免费国内精品 | 美女艹b| 国产成人精品一区二区三区四区 | 啪啪av | 91资源在线 | 午夜影院 | 欧美成人精品 | www.天天操.com| 黄色a视频 | 性色av一区二区三区 | 91久久精品一区二区二区 | 国产农村妇女毛片精品久久麻豆 | 精品91视频| 中文字幕一区二区不卡 | 久久久久精 | 国产精品1 | 免费成人在线网站 | av黄色在线| 国产精品久久久久久久久久久久 | 亚洲精品乱码久久久久久按摩观 | 粉嫩av在线 | 国产黄色精品 | 天堂一区 | 91精品久久久久久久久久入口 | 色综合一区二区 | av中文字幕在线 | 日韩成人在线电影 |