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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

STM32F429的啟動(dòng)文件 startup_stm32f429xx.s中的疑問(wèn)?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:157141 發(fā)表于 2017-2-8 17:06 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
1黑幣
下面的代碼是從STM32F429的啟動(dòng)文件 startup_stm32f429xx.s中摘抄的關(guān)于棧區(qū)定義的匯編代碼:
Stack_Size      EQU    0x400;       ……………………………………………………第1行

                       AREA    STACK, NOINIT, READWRITE, ALIGN=3 ………..第2行
Stack_Mem     SPACE   Stack_Size …………………………………………………..第3行
__initial_sp  …………………………………………………………………………………….第4行


(1)這4行語(yǔ)句中有3個(gè)偽指令“EQUAREA SPACE”,共4行代碼,只有第1行的代碼后面有一個(gè)分號(hào)“;”,其他3行都沒(méi)有,這是怎么回事?

(2)第1行代碼定義了一個(gè)變量Stack_Size且 Stack_Size==0x400,這我可以理解,沒(méi)啥問(wèn)題。

(3)第2行代碼,是偽指令A(yù)REA,定義了一個(gè)數(shù)據(jù)段段名為STACK的內(nèi)存空間,不初始化或不初始化為0,可讀可寫(xiě),并以8字節(jié)對(duì)齊。這個(gè)8字節(jié)對(duì)齊是什么概念?為什么要8字節(jié)對(duì)齊?

(4)第3行代碼中,SPACE   Stack_Size是開(kāi)辟一個(gè)大小為0x400的內(nèi)存空間,那么"Stack_Mem"是標(biāo)號(hào)嗎?是表示開(kāi)辟的這個(gè)內(nèi)存空間的名稱(chēng)是Stack_Mem么?本來(lái)我也認(rèn)為Stack_Mem是一個(gè)定義的內(nèi)存空間的名稱(chēng),可是在“.MAP”文件中,Stack_Mem的值卻是個(gè)地址(如下灰色區(qū)域所示),可以看出Stack_Mem==0x20000388,它不是內(nèi)存空間么,怎么會(huì)是0x20000388?而不是0x400=1024KB,為什么?
Symbol Name                              Value        Ov Type     Size     Object(Section)
  .data                                   0x2000001c   Section        4       usart.o(.data)
  .bss                                     0x20000020   Section      264     usart.o(.bss)
  .bss                                     0x20000128   Section       96      libspace.o(.bss)
  HEAP                                   0x20000188   Section      512     startup_stm32f429xx.o(HEAP)
  Heap_Mem                          0x20000188   Data         512      startup_stm32f429xx.o(HEAP)
  STACK                                 0x20000388   Section     1024    startup_stm32f429xx.o(STACK)
  Stack_Mem                          0x20000388   Data        1024     startup_stm32f429xx.o(STACK)
  __initial_sp                           0x20000788   Data           0        startup_stm32f429xx.o(STACK)

(5)第4行代碼中,“_initial_sp”表示棧頂指針,_initial_sp是怎么來(lái)的?那我隨便寫(xiě)個(gè)字符都可以表示棧頂指針了??比如我用“initial_sp”替代“_initial_sp”,那么initial_sp也可以表示棧頂指針了?


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

使用道具 舉報(bào)

沙發(fā)
ID:163961 發(fā)表于 2017-2-8 22:31 | 只看該作者
好,好,學(xué)習(xí),學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

板凳
ID:123289 發(fā)表于 2017-2-12 08:40 | 只看該作者
樓主很認(rèn)真,將來(lái)必成。
1、此句是純匯編,";"號(hào)是匯編的注解標(biāo)記,無(wú)它后面的字符會(huì)被認(rèn)為是語(yǔ)句的一部分,顯然“;”后面的不是語(yǔ)句,是注釋。
3、猜一下:8字對(duì)齊是,不足8個(gè)字符時(shí)用“空”補(bǔ)足,目的:格式整齊,便于觀看。
4、也猜一下: 0x20000388 是位置指針,指示堆棧的位置起點(diǎn)。它等價(jià)于0388,因?yàn)樽钋懊娴?0太大,地址溢出了。但20在編譯時(shí)有用。什么用記不清了,但不妨礙你應(yīng)用。
5、你說(shuō)的對(duì)。但是你需要保證所有的編譯程序都認(rèn)為“initial_sp表示棧頂指針”。

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美在线视频免费 | 午夜精品久久久 | 一区二区三区四区电影 | 国产精品久久久久无码av | 精品国产乱码久久久久久中文 | 欧美多人在线 | 亚洲97| 欧洲亚洲一区二区三区 | 香蕉二区 | 在线观看成人 | 欧美高清一区 | 亚洲乱码一区二区三区在线观看 | 欧美日韩国产一区二区三区 | 日韩欧美国产一区二区 | 亚洲免费精品 | 国产精品久久久久久久久久久久久 | 国产精品毛片久久久久久 | 在线观看中文字幕亚洲 | 国产韩国精品一区二区三区 | 欧美成人一级视频 | 992人人草 | 99精品视频一区二区三区 | 97久久精品午夜一区二区 | 免费观看黄色片视频 | 91精品国产91久久久久久密臀 | 中文字幕在线免费观看 | 中文字幕1区| 天天天天天操 | 国产成人在线一区二区 | 久久草视频 | 黄色片免费看视频 | 亚洲免费片| 日韩淫片免费看 | 成年人网站免费视频 | 国产精品一区二区三区在线播放 | 一区二区在线免费观看 | 欧美亚洲国语精品一区二区 | 视频一区二区在线观看 | 中文字幕亚洲视频 | 日本在线免费 | 麻豆久久久9性大片 |