www.mikrocontroller.net

Forum: Compiler & IDEs [WinARM] Data-Alignment lässt grüßen


Autor: Thomas Pototschnig (pototschnig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin gerade dabei einen .BMP Importfilter für meinen SAM7S zu basteln
und wollte mir mal ankucken, wie der mit dem misalignment des
Bitmap-Headers zurecht kommt (Optimiert auf größe).

Das Ergebnis hat mich so schockiert, dass ich es euch nocht
vorenthalten will. Schaut es euch mal an und lasst es auf euch wirken.

Hier der C-Code:

  buf->width = info.width;
  buf->height = info.height;
  buf->bpl = info.width*2;

Und das was rauskommt (Optimierung auf größe!)

  100388:  e3a06001   mov  r6, #1  ; 0x1
  10038c:  1a000024   bne  100424 <>
  100390:  e59f30a4   ldr  r3, [pc, #164]  ; 10043c <.text+0x43c>
  100394:  e583e000   str  lr, [r3]
  100398:  e3e0307b   mvn  r3, #123  ; 0x7b
  10039c:  e5c53000   strb  r3, [r5]
  1003a0:  e5c5c003   strb  ip, [r5, #3]
  1003a4:  e5c5c001   strb  ip, [r5, #1]
  1003a8:  e5c5c002   strb  ip, [r5, #2]
  1003ac:  e5d42009   ldrb  r2, [r4, #9]
  1003b0:  e5d43008   ldrb  r3, [r4, #8]
  1003b4:  e5d4100a   ldrb  r1, [r4, #10]
  1003b8:  e1833402   orr  r3, r3, r2, lsl #8
  1003bc:  e5d4200b   ldrb  r2, [r4, #11]
  1003c0:  e1833801   orr  r3, r3, r1, lsl #16
  1003c4:  e1833c02   orr  r3, r3, r2, lsl #24
  1003c8:  e1a00c23   mov  r0, r3, lsr #24
  1003cc:  e1a02423   mov  r2, r3, lsr #8
  1003d0:  e1a01823   mov  r1, r3, lsr #16
  1003d4:  e5c50007   strb  r0, [r5, #7]
  1003d8:  e5c52005   strb  r2, [r5, #5]
  1003dc:  e5c51006   strb  r1, [r5, #6]
  1003e0:  e5c53004   strb  r3, [r5, #4]
  1003e4:  e5d42005   ldrb  r2, [r4, #5]
  1003e8:  e5d43004   ldrb  r3, [r4, #4]
  1003ec:  e5d41006   ldrb  r1, [r4, #6]
  1003f0:  e1833402   orr  r3, r3, r2, lsl #8
  1003f4:  e5d42007   ldrb  r2, [r4, #7]
  1003f8:  e1833801   orr  r3, r3, r1, lsl #16
  1003fc:  e1833c02   orr  r3, r3, r2, lsl #24
  100400:  e1a03613   mov  r3, r3, lsl r6
  100404:  e1a00c23   mov  r0, r3, lsr #24
  100408:  e1a02423   mov  r2, r3, lsr #8
  10040c:  e1a01823   mov  r1, r3, lsr #16
  100410:  e5c52009   strb  r2, [r5, #9]
  100414:  e5c53008   strb  r3, [r5, #8]
  100418:  e5c5100a   strb  r1, [r5, #10]
  10041c:  e5c5000b   strb  r0, [r5, #11]
  100420:  ea000000   b  100428 <>

Sowas ist doch beeindruckend :-)

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.