www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik WinARM .lst files


Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich will mich gerade in WinARM und den LPC2103 einarbeiten. Nun habe
ich folgendes Problem:

Ich möchte wissen, wie der Assemblercode aussieht, den der Compiler
erzeugt. Da gibt es die Files .lst und .lss.

Im .lst File steht nun z.B. folgendes:

  67:ledswitch.c   ****   while (1)
  68:ledswitch.c   ****   {
  78:ledswitch.c   ****     int value = 0xAE;
  79:ledswitch.c   ****     int t;
  80:ledswitch.c   ****       FIO0PIN = (value&1)<<LEDPIN;
  63                oc 1 83 0
  64 0068 EB2F01E5     mov  r3, #512
  81:ledswitch.c   ****       asm volatile ("nop");
  65                 r3, r0
  66 006c 0000A0E1     str  r3, [r1, #-4095]
  82:ledswitch.c   ****       value>>=1;
  83:ledswitch.c   ****       FIO0PIN = (value&1)<<LEDPIN;
  67                , #512
  68 0070 023CA0E3     .loc 1 40 0
  69 0074 EB3F01E5     bic  r2, r2, #-2147483648
  84:ledswitch.c   ****       value>>=1;
  85:ledswitch.c   ****       FIO0PIN = (value&1)<<LEDPIN;
  70                r  r2, [r1, #8]
  71 0078 EB3F01E5     .loc 1 41 0
  86:ledswitch.c   ****       value>>=1;
  87:ledswitch.c   ****       FIO0PIN = (value&1)<<LEDPIN;
  72                tr  r0, [r1, #4]
  73 007c EB3F01E5     .loc 1 43 0
  88:ledswitch.c   ****       value>>=1;
  89:ledswitch.c   ****       FIO0PIN = (value&1)<<LEDPIN;
  74                dr  r3, [ip, #416]
  75 0080 EB2F01E5     orr  r3, r3, #1
  90:ledswitch.c   ****       value>>=1;
  91:ledswitch.c   ****       FIO0PIN = (value&1)<<LEDPIN;
  76                tr  r3, [ip, #416]
  77 0084 EB3F01E5     .loc 1 44 0
  92:ledswitch.c   ****       value>>=1;
  93:ledswitch.c   ****       FIO0PIN = (value&1)<<LEDPIN;
  78                vn  r1, #-1073741824
  79 0088 EB2F01E5     sub  r1, r1, #12288
  94:ledswitch.c   ****       value>>=1;
  95:ledswitch.c   ****       FIO0PIN = (value&1)<<LEDPIN;
  80                dr  r3, [r1, #-4095]
  81 008c EB3F01E5     orr  r3, r3, r0
  96:ledswitch.c   ****       value>>=1;
  97:ledswitch.c   ****       FIO0CLR = (1<<LEDPIN);
  82                tr  r3, [r1, #-4095]
  83 0090 E33F01E5     .loc 1 45 0
  84 0094 F3FFFFEA     ldr  r2, [r1, #-4079]
  85                  bic  r2, r2, #512
  86                  str  r2, [r1, #-4079]
  87                .LBE6:
 112                  str  r3, [r1, #-4075]
DEFINED SYMBOLS




In Zeile 67 steht nun z.B. nur ", #512". Kann es sein dass WinARM
hier einen Bug hat. Auch endet das .lst File, ohne z.B. die "}" von
while (1) irgendwo anzuzeigen.

Was bedeutet in Zeile 63 "oc 1 83 0"? Ich bin mit ARM Assembler noch
nicht vertraut, aber sind Parameter nicht immer durch einen Doppelpunkt
getrennt?


*
  26                  .loc 1 39 0
  27                  mov  r1, #-536870912
  28 0010 0E12A0E3     add  r1, r1, #163840
  29 0014 0A1981E2     ldr  r3, [r1, #8]
  30 0018 083091E5     orr  r3, r3, #512
  31 001c 023C83E3     str  r3, [r1, #8]
  32 0020 083081E5     .loc 1 40 0
  33                  ldr  r2, [r1, #8]
  34 0024 082091E5     .loc 1 41 0
  35                  mov  r0, #512
  36 0028 020CA0E3     .loc 1 40 0
  37                  bic  r2, r2, #-2147483648
  38 002c 0221C2E3     str  r2, [r1, #8]
  39 0030 082081E5     .loc 1 41 0
  40                  str  r0, [r1, #4]
  41 0034 040081E5     .loc 1 43 0
  42                  ldr  r3, [ip, #416]
  43 0038 A0319CE5     orr  r3, r3, #1
  44 003c 013083E3     str  r3, [ip, #416]
  45 0040 A0318CE5     .loc 1 44 0
*


Und was bedeuten Zeilen wie ".loc 1 40 0", ".loc 1 41 0",... ?

Danke,
Bernd

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein .lst File ist Schrott.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Assembler-Code eines C Files gibt's einfacher mit
   arm-elf-gcc -S sourcefile.c

Source/Assembler Mix vom Ergebnis gibt es mit
   arm-elf-objdump -S -d file.elf

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat geklappt, Danke.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.