Windows에서 Arduino 스케치의 어셈블리 언어 목록을 어떻게 얻을 수 있습니까?

StackOverflow https://stackoverflow.com/questions/919781

  •  06-09-2019
  •  | 
  •  

문제

Arduino 스케치의 어셈블리 언어 목록을보고 싶습니다. 이것을 어떻게 달성 할 수 있습니까?

업데이트: Windows 시스템에서 Arduino 소프트웨어를 실행 중입니다.

도움이 되었습니까?

해결책

이를 수행하는 한 가지 방법은 사용하는 것입니다 avr-objdump.elf 빌드에 의해 생성 된 파일. 예를 들어, OS XI에서는 다음을 수행 할 수 있습니다.

$ cd ~/arduino-0015/examples/Digital/Blink/applet
$ avr-objdump -d Blink.elf

(창에서의 경로는 분명히 다를 수 있습니다.) 이것은 코드의 분해를 생성하며, 그 중 일부는 다음과 같이 보입니다.

0000013a <main>:
 13a:   0e 94 3e 01     call    0x27c <init>
 13e:   0e 94 97 00     call    0x12e <setup>
 142:   0e 94 80 00     call    0x100 <loop>
 146:   fd cf           rjmp    .-6             ; 0x142 <main+0x8>

다른 팁

Linux를 사용하는 경우 따라갈 수 있습니다 IDE없이 Arduino를 컴파일하는 방법에 대한이 자습서.

이렇게하면 -s 플래그로 GCC를 실행하여 어셈블리 목록을 얻을 수 있습니다.

다음 (Hacky) 단계는 Windows에서 Arduino 스케치 및 관련 라이브러리의 어셈블리 언어 목록을 제공합니다.

  1. 다운로드 (및 이름 바꾸기) Arduino Windows 명령 줄 배치 파일 스케치를 포함하는 디렉토리 (The .pde 파일)
  2. 위의 링크 된 페이지에 지정된대로 필요한 환경 변수를 설정
  3. 추가하다 -S ~로 abuild_gcc_opts 변수 abuild.bat (라인 158)
  4. 운영 abuild -r -c <pde_filename>
  5. 다음과 같은 경고와 오류를받을 것으로 예상됩니다.

    ... warning: #warning "This file has been moved to <util/delay.h>."

    .\obj\<pde_filename>.cpp.o: file format not recognized: treating as linker script

    .\obj\<pde_filename>.cpp.o:1: syntax error

어셈블리 언어 목록은 .o 생성 된 파일 obj 예배 규칙서. 예를 들어 스케치 자체의 목록이 obj\<pde_filename>.cpp.o

-S (S NOT S) 플래그는 C 코드도 보여줍니다. 혼합 목록으로도 알고 있습니다.

Linux : (.arduino/preverences.txt : delete_target_folder = false)

$ cd /tmp/buildxxxx.tmp
$ avr-objdump -dS Blink.cpp.elf

int main(void)
{
    init();
 2f4:   8a df           rcall   .-236       ; 0x20a <init>
...
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top