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


von Thomas P. (pototschnig)


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 :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.