.lss Dateien und der C-Code

Gast #180086
Lesenswert?
• ▲
▼
Hi,

warum erzeugt WinAVR in der .lss Datei eigentlich nur zu einigen
Funktionen ASM Code unter den jeweiligen C-Zeilen, in anderen nur ASM
??

Die Main Funktion ist zum Beispiel ein einziger ASM Block:
000000d4 <main>:
  d4:  c7 e5         ldi  r28, 0x57  ; 87
  d6:  d4 e0         ldi  r29, 0x04  ; 4
  d8:  de bf         out  0x3e, r29  ; 62
  da:  cd bf         out  0x3d, r28  ; 61
  dc:  0e 94 47 00   call  0x8e
  e0:  0e 94 c1 00   call  0x182
  e4:  0e 94 8a 04   call  0x914
  e8:  0e 94 10 05   call  0xa20
  ec:  c7 98         cbi  0x18, 7  ; 24
  ....


In der gleichen Datei etwas weiter unten:
00000182 <uart_init>:
{
  unsigned char i;

  /* Baudrate einstellen */
  UBRRH = (uint8_t) (UBRR_BAUD>>8);
 182:  10 bc         out  0x20, r1  ; 32
  UBRRL = (uint8_t) UBRR_BAUD & 0x00FF;
 184:  89 e1         ldi  r24, 0x19  ; 25
 186:  89 b9         out  0x09, r24  ; 9
 ....

Kann ich irgendwo einstellen, dass die Darstellung wie uart_init für
alle Funktionen haben will ?? Ich finde das nämlich immer sehr nützlich
um festzustellen wie Speicheraufwendig eine Funktion später in Assembler
ist.

MfG Fabian
Gast #180088
Lesenswert?
• ▲
▼
Was haben den jetzt static Variablen damit zu tun ?? Im dem Programm aus
dem der obige Assemblerauszug stammt wird werden zwar welche verwendet,
allerdings in nur in einer Interruptroutine.

Allerdings bekomme ich den gleichen Effekt auch, wenn ich ein Projekt
ohne static Variablen compiliere. Für manche Funktionen wird Asm +
C-Kommentare erzeugt, für andere nur Asm...

Grüße
Fabian
Gast #180089
Lesenswert?
• ▲
▼
Die Rede war ja nicht von statischen Variablen, sondern von
Funktionen.

Du solltest bei alldem nicht vergessen, dass das Ganze nicht etwa ein
Listing des Compilers ist, sondern eine Disassemblierung des fertigen
Objektcodes, die zusätzlich gewürzt wird mit den Quellcodezeilen, auf
die die Debug-Information der Objektdatei verweist.  Infolge
verschiedenerlei Optimierungen muss der Compiler natürlich den Code
nicht 1:1 abarbeiten, folglich kann es Quellzeilen geben, die komplett
wegoptimiert werden und gar keinen Code erzeugen, wieder andere finden
sich an verschiedenen Stellen im Objektcode wieder.  Gerade in diesem
Falle dürfte objcopy es ziemlich schwer haben, ein einigermaßen
passendes .lss-File zu erzeugen...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.