標(biāo)題: 51單片機(jī)C語言指針是怎么找到數(shù)據(jù)的? [打印本頁]

作者: censv    時間: 2022-10-31 14:31
標(biāo)題: 51單片機(jī)C語言指針是怎么找到數(shù)據(jù)的?
單片機(jī)p1的值是0xff,是如何找到c:0x001c的呢?
版本:keil 5


作者: 188610329    時間: 2022-10-31 17:08
你聲明的是通用指針,一共三個字節(jié),你只顯示一個字節(jié)自然只有0xff,代表類型的這個值了羅,0x00和0x1c就被藏了唄。
作者: censv    時間: 2022-10-31 17:36
188610329 發(fā)表于 2022-10-31 17:08
你聲明的是通用指針,一共三個字節(jié),你只顯示一個字節(jié)自然只有0xff,代表類型的這個值了羅,0x00和0x1c就被 ...

并沒有看到隱藏啊

1667208976255..jpg (648.49 KB, 下載次數(shù): 90)

1667208976255..jpg

作者: Hephaestus    時間: 2022-10-31 17:44
censv 發(fā)表于 2022-10-31 17:36
并沒有看到隱藏啊

看匯編是藏在0x8里面,至于為什么顯示0x90?可能是個bug。
作者: 188610329    時間: 2022-10-31 17:49
censv 發(fā)表于 2022-10-31 17:36
并沒有看到隱藏啊

哦,你這是名字問題,  KEIL 的動態(tài)解析不區(qū)分大小寫,所以錯誤,你換個名字就好了, 比如 *Test1 之類的。
作者: censv    時間: 2022-10-31 19:22
188610329 發(fā)表于 2022-10-31 17:49
哦,你這是名字問題,  KEIL 的動態(tài)解析不區(qū)分大小寫,所以錯誤,你換個名字就好了, 比如 *Test1 之類的。

動態(tài)解析不區(qū)分大小寫?求細(xì)說
作者: 188610329    時間: 2022-10-31 21:04
censv 發(fā)表于 2022-10-31 19:22
動態(tài)解析不區(qū)分大小寫?求細(xì)說

他把 p1  當(dāng)作了  P1   顯示地址為: 0x90
作者: censv    時間: 2022-10-31 22:06
188610329 發(fā)表于 2022-10-31 21:04
他把 p1  當(dāng)作了  P1   顯示地址為: 0x90

喔,明白了,多謝
那為何右下角的棧變量能正確解析,不是一個解析方式嗎?
作者: 188610329    時間: 2022-11-1 11:12
censv 發(fā)表于 2022-10-31 22:06
喔,明白了,多謝
那為何右下角的棧變量能正確解析,不是一個解析方式嗎?

不是, 懸浮顯示是  KEIL 通過你的C語言代碼,而進(jìn)行的 時實轉(zhuǎn)匯編的功能,“解析”出來的。
右下角的內(nèi)存狀態(tài)框,是“仿真”功能,通過編譯后的單片機(jī)執(zhí)行代碼,模擬運行后出來的結(jié)果。

由于C語言編譯的時候,大小寫不同是不同的變量,生成的最終 單片機(jī)執(zhí)行代碼,是指向不同的地址。
而,匯編在編譯的時候,大小寫不同是同一個變量,所以,實施解析和 “仿真” 會有不同的結(jié)果。
所以,懸浮顯示就當(dāng)一個參考就好了,最終還是要看 內(nèi)存狀態(tài)框的變化。
作者: censv    時間: 2022-11-1 11:46
188610329 發(fā)表于 2022-11-1 11:12
不是, 懸浮顯示是  KEIL 通過你的C語言代碼,而進(jìn)行的 時實轉(zhuǎn)匯編的功能,“解析”出來的。
右下角的內(nèi) ...

多謝解答




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1