gcc 4.71 ツールチェーンを使用して、STM32F4 (ARM Cortex-M4) マイクロコントローラー用の C プログラムをコンパイルしています。プログラムをコンパイルしてリンクした後 (.elf ファイルを持っています)、各ソース コード行の最初の命令のアドレスを抽出したいと考えています。現在、逆アセンブリ ファイルを解析してこれを実行しようとしています。たとえば、以下では、main.c の 41 行目で adr 0x8000c44 を取得しています。
いくつかの gcc ツールを使用してこの情報を取得する方法が他にもっと便利な方法はありますか?
サンプル逆アセンブリ ファイル:
c:\a_test2/main.c:41
8000c44: b580 プッシュ {r7, lr}
コンパイルとリンクに使用するコマンドライン:
c:\Yagarto471\bin\arm-none-eabi-gcc.exe -c -mcpu=cortex-m4 -mthumb -ffunction-sections -fdata-sections -Wall -Wextra -Wno-unused-parameter -Wno-unknown-pragmas -Wno-unused-variable -Wno-unused-but-set-variable -std=gnu89 -g -ggdb3 -fverbose-asm -Wa,-ahlms=app.lst -DUSE_STDPERIPH_DRIVER -DSTM32F4XX -DUSE_STM32F4_DISCOVERY -DUSE_USB_OTG_FS -DHSE_VALUE=8000000 - MD -MP -MF app.d -I. -Iinc -save-temps -c main.c -o main.o
c:\Yagarto471\bin\arm-none-eabi-g++ -mcpu=cortex-m4 -mthumb -Tstm32f4xx.ld -g -Wl,-Map=Map.map,--cref,--no-warn-mismatch - WL,--gc-sections -nostartfiles startup\startup_stm32f4xx.o startup\stm32f4_discovery.o startup\system_stm32f4xx.o startup\stm32f4xx_rcc.o startup\stm32f4xx_gpio.o startup\stm32f4xx_tim.o startup\misc.o startup\stm32f4xx_usart.o startup \syscalls.o main.o sys.o intr.o vars.o debug.o lib.o -o stm32f4_temp.elf