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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 7292|回復: 2
收起左側

STM32F429的啟動文件 startup_stm32f429xx.s中的疑問?

[復制鏈接]
ID:157141 發表于 2017-2-8 17:06 | 顯示全部樓層 |閱讀模式
1黑幣
下面的代碼是從STM32F429的啟動文件 startup_stm32f429xx.s中摘抄的關于棧區定義的匯編代碼:
Stack_Size      EQU    0x400;       ……………………………………………………第1行

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


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

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

(3)第2行代碼,是偽指令AREA,定義了一個數據段段名為STACK的內存空間,不初始化或不初始化為0,可讀可寫,并以8字節對齊。這個8字節對齊是什么概念?為什么要8字節對齊?

(4)第3行代碼中,SPACE   Stack_Size是開辟一個大小為0x400的內存空間,那么"Stack_Mem"是標號嗎?是表示開辟的這個內存空間的名稱是Stack_Mem么?本來我也認為Stack_Mem是一個定義的內存空間的名稱,可是在“.MAP”文件中,Stack_Mem的值卻是個地址(如下灰色區域所示),可以看出Stack_Mem==0x20000388,它不是內存空間么,怎么會是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是怎么來的?那我隨便寫個字符都可以表示棧頂指針了??比如我用“initial_sp”替代“_initial_sp”,那么initial_sp也可以表示棧頂指針了?


回復

使用道具 舉報

ID:163961 發表于 2017-2-8 22:31 | 顯示全部樓層
好,好,學習,學習學習
回復

使用道具 舉報

ID:123289 發表于 2017-2-12 08:40 | 顯示全部樓層
樓主很認真,將來必成。
1、此句是純匯編,";"號是匯編的注解標記,無它后面的字符會被認為是語句的一部分,顯然“;”后面的不是語句,是注釋。
3、猜一下:8字對齊是,不足8個字符時用“空”補足,目的:格式整齊,便于觀看。
4、也猜一下: 0x20000388 是位置指針,指示堆棧的位置起點。它等價于0388,因為最前面的20太大,地址溢出了。但20在編譯時有用。什么用記不清了,但不妨礙你應用。
5、你說的對。但是你需要保證所有的編譯程序都認為“initial_sp表示棧頂指針”。

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 夜夜嗨av一区二区三区网页 | 91在线精品视频 | 国产欧美日韩综合 | 麻豆av在线免费观看 | 亚洲69视频 | 亚洲欧洲在线观看 | 国产精品久久久久久亚洲影视 | 长河落日电视连续剧免费观看 | 亚洲欧美视频 | 国产一区精品在线观看 | 国产一区二区三区久久 | 97久久久久 | 免费网站观看www在线观 | 在线观看小视频 | 精品久久久久久久久久久久久 | 91久久国产综合久久91精品网站 | 国产成人在线视频 | 夜夜骚av | 免费观看一区二区三区 | 久久国产精品免费视频 | 精品国产99久久久久久宅男i | 一级黄色免费看 | 国产精品自拍小视频 | 黄色免费av | 欧美爱爱视频 | 深夜免费福利 | 国产农村妇女aaaaa视频 | 国产一区二区福利 | 亚洲欧美另类在线观看 | av一级在线| 福利视频导航大全 | 免费看成人片 | 精品视频免费在线观看 | 91久久国产综合久久91精品网站 | 日本三级大片 | 午夜激情网站 | 四虎黄色网址 | 国产97视频 | 日韩一区二区在线视频 | 色在线播放 | 911精品国产一区二区在线 |