編譯一些代碼後,編譯器生成一堆文件。我有統計,符號,調用樹,錯誤,列表,調試和exe。除了列表文件外,我已經想清楚了每個含義。什麼是列表文件的功能。是用於用戶還是計算機/嵌入式系統本身?列表文件在C(.LST)
0
A
回答
4
列表文件的確切內容通過工具和片稍有變化被使用。
該文件的主要部分將是將C源代碼轉換爲由編譯器執行的彙編指令。這對於調試代碼以及在翻譯某些源代碼結構時檢查編譯器的效率很有用。在下面的例子中,每個Cline都有一個行號,後面列出了彙編器。 (這個例子是針對AVR32處理器的)。
171 /**********************************************************
172 * Test for a receive interrupt
173 **********************************************************/
174 if (USART_CHANNEL[ Channel ] -> CSR.rxrdy)
000008 F8051502 LSL R5,R12,0x2
00000C ........ MOV R7,LWRD(USART_CHANNEL)
000010 EA17.... ORH R7,HWRD(USART_CHANNEL)
000014 EE0C0027 ADD R7,R7,R12<<0x2
000018 6E0C LD.w R12,R7[0x0]
00001A ........ MOV R6,LWRD(Serial_Receive_Queue)
00001E EA16.... ORH R6,HWRD(Serial_Receive_Queue)
000022 785B LD.w R11,R12[0x14]
000024 A19B LSR R11,0x1
000026 C0B2 BRCC ??USART_Process_Interrupt_1:C
被示爲十六進制值「....」上方是未在編譯時已知的地址,它們是將在鏈接時解析的符號。
該列表文件通常還會提供一些有關代碼大小,RAM要求和正在編譯的模塊的堆棧使用情況的統計信息。再次IAR工具箱以字節爲AVR32
最大堆棧用法:
Function CSTACK
-------- ------
Serial_Ports_Initialise 36
-> gpio_enable_module 36
-> usart_init_rs232 36
-> Indirect call 36
-> Indirect call 36
-> Indirect call 36
-> Indirect call 36
Serial_Transmit_With_Length 20
-> xQueueGenericSend 20
-> vTaskDelay 20
USART0_INT_Handler 0
-> USART_Process_Interrupt 0
USART1_INT_Handler 0
-> USART_Process_Interrupt 0
USART2_INT_Handler 0
-> USART_Process_Interrupt 0
USART_Process_Interrupt 32
-> xQueueGenericSendFromISR 32
-> xQueueReceiveFromISR 32
Segment part sizes:
Function/Label Bytes
-------------- -----
Serial_Receive_Queue 24
Serial_Transmit_Queue
USART_CHANNEL 12
USART0_INT_Handler 8
USART1_INT_Handler 8
USART2_INT_Handler 12
USART_Process_Interrupt 112
Serial_Ports_Initialise 172
USART_Channel_In_Use 56
USART_GPIO_MAP
USART_OPTIONS
Serial_Transmit_With_Length 116
?<Initializer for USART_CHANNEL> 12
??USART1_INT_Handler??handle 4
Others 24
400 bytes in segment CODE32
56 bytes in segment DATA32_C
12 bytes in segment DATA32_I
12 bytes in segment DATA32_ID
24 bytes in segment DATA32_Z
28 bytes in segment EVSEG
4 bytes in segment HTAB
24 bytes in segment INITTAB
400 bytes of CODE memory
100 bytes of CONST memory (+ 24 bytes shared)
36 bytes of DATA memory
Errors: none
Warnings: 1
也會有任何錯誤消息或警告生成插入的代碼的相關行。
儘管堆棧使用在任何嵌入式系統中都是難以解決的問題,並且可以查看編譯器生成的彙編程序級代碼,因此可以使用List文件來評估堆棧和內存使用情況。
根據經驗,使用源代碼級調試工具時,列表文件並不特別有用 - 通常這會直接顯示相關的反彙編代碼。
1
列表文件(.LST)包含一個C代碼塊[通過一系列句點字符註釋掉],後跟該塊的彙編代碼。
例如:
.................... return FALSE;
0046: MOVLW 00
0047: MOVWF 21
0048: GOTO 049
相關問題
- 1. 使用.lst文件編譯
- 2. 如何閱讀NASM彙編程序.lst列表文件
- 3. 如何使用bash命令將文件名列表寫入.lst文件
- 4. Python - 返回僅包含整數的lst中的列表列表?
- 5. 檢查列表LST,如果它在蟒蛇
- 6. DEV C++頭文件列表
- 7. C#JSON文件到列表
- 8. C#PHP列表文件
- 9. 在C中的列表文件
- 10. objective-c在文件列表中搜索
- 11. C#從列表框文件列表中打開文件
- 12. 爲什麼要編譯「List <String> lst; Object [] o = lst;」如果列表<String>是可變參數?
- 13. Erlang,deep_reverse(Lst)函數
- 14. 文本文件到列表框(C#)
- 15. 文件在列表
- 16. 在文件列表
- 17. 傾倒在C#中的JSON文件的文件列表
- 18. 錯誤寫有「LEN(LST)」的文件時,當它爲空
- 19. MASM 6中的.lst文件中的資本R 6
- 20. C - 從文件加載鏈接列表
- 21. 帶多文件的C++鏈接列表
- 22. C#.NET遠程文件列表內容
- 23. 將C#列表導出到Csv文件
- 24. 從文件讀取鏈接列表C++
- 25. C#列表中的Amazon S3文件夾
- 26. C#txt文件到列表框中
- 27. c#序列化多個1列表在同一個xml文件
- 28. 獲取列表文件夾和文件列表中的根文件夾通過dirent.h在C++
- 29. `lapply(lst,「[」,1,')的解釋`
- 30. 列表控件C#