Quantcast
Channel: Raspberry Pi Forums
Viewing all articles
Browse latest Browse all 4854

SDK • I'm curious why my sloppy code is actually smaller than optimized code...

$
0
0
My apologies for posting so much code here. Please let me know if this frowned upon.

I wanted to start a new thread that is related to my previous "How can I profile basic functions for the RP2040?" thread.

This time, I am drawing tiles instead of sprites. In my other topic, Adam was able to drastically help me speed up my sprite drawing routine. I went from 14 sprites per scanline to 24.

I also have a tile drawing routine that is almost identical to the sprite drawing. So I assumed putting the same logic there should speed that up as well. But it actually had the opposite effect!

The difference between sprites and tiles is that the sprites can move freely while the tiles are fixed on 16 pixel boundaries. Also, tiles do not check for color 0 so they should be even faster.

Below you will see three different versions along with their assembled code.
I would love to know why the sprite trick for optimizing didn't work for this tile code.

The odd part is that "Optimized 2" is ALMOST as fast as the original but still larger.

Thanks for any feedback!

Original Code

Code:

void__no_inline_not_in_flash_func(drawMap)(uint16_t screenWidth, uint16_t screenHeight, uint16_t raster_y, uint16_t pixels[screenWidth]) {    if (raster_y >= screenHeight) return;    int map_row_offset = (raster_y / TILE_HEIGHT) * 20;    int line_offset = raster_y % TILE_HEIGHT;    for (int x = 0; x < 20; x++) {        uint8_t tile_number = map[map_row_offset + x];        uint8_t tile_palette = map_tile_palettes[map_row_offset + x];        uint32_t line = tiles[tile_number][line_offset];        uint8_t c0 = ((line & 0b11000000000000000000000000000000) >> 30);        uint8_t c1 = ((line & 0b00110000000000000000000000000000) >> 28);        uint8_t c2 = ((line & 0b00001100000000000000000000000000) >> 26);        uint8_t c3 = ((line & 0b00000011000000000000000000000000) >> 24);        uint8_t c4 = ((line & 0b00000000110000000000000000000000) >> 22);        uint8_t c5 = ((line & 0b00000000001100000000000000000000) >> 20);        uint8_t c6 = ((line & 0b00000000000011000000000000000000) >> 18);        uint8_t c7 = ((line & 0b00000000000000110000000000000000) >> 16);        uint8_t c8 = ((line & 0b00000000000000001100000000000000) >> 14);        uint8_t c9 = ((line & 0b00000000000000000011000000000000) >> 12);        uint8_t ca = ((line & 0b00000000000000000000110000000000) >> 10);        uint8_t cb = ((line & 0b00000000000000000000001100000000) >> 8);        uint8_t cc = ((line & 0b00000000000000000000000011000000) >> 6);        uint8_t cd = ((line & 0b00000000000000000000000000110000) >> 4);        uint8_t ce = ((line & 0b00000000000000000000000000001100) >> 2);        uint8_t cf = ((line & 0b00000000000000000000000000000011) >> 0);        pixels[x * TILE_WIDTH] = tile_palettes[tile_palette].color[c0];        pixels[x * TILE_WIDTH + 1] = tile_palettes[tile_palette].color[c1];        pixels[x * TILE_WIDTH + 2] = tile_palettes[tile_palette].color[c2];        pixels[x * TILE_WIDTH + 3] = tile_palettes[tile_palette].color[c3];        pixels[x * TILE_WIDTH + 4] = tile_palettes[tile_palette].color[c4];        pixels[x * TILE_WIDTH + 5] = tile_palettes[tile_palette].color[c5];        pixels[x * TILE_WIDTH + 6] = tile_palettes[tile_palette].color[c6];        pixels[x * TILE_WIDTH + 7] = tile_palettes[tile_palette].color[c7];        pixels[x * TILE_WIDTH + 8] = tile_palettes[tile_palette].color[c8];        pixels[x * TILE_WIDTH + 9] = tile_palettes[tile_palette].color[c9];        pixels[x * TILE_WIDTH + 10] = tile_palettes[tile_palette].color[ca];        pixels[x * TILE_WIDTH + 11] = tile_palettes[tile_palette].color[cb];        pixels[x * TILE_WIDTH + 12] = tile_palettes[tile_palette].color[cc];        pixels[x * TILE_WIDTH + 13] = tile_palettes[tile_palette].color[cd];        pixels[x * TILE_WIDTH + 14] = tile_palettes[tile_palette].color[ce];        pixels[x * TILE_WIDTH + 15] = tile_palettes[tile_palette].color[cf];    }}


Optimized version 1

Code:

void__no_inline_not_in_flash_func(drawMapOptimized1)(uint16_t screenWidth, uint16_t screenHeight, uint16_t raster_y, uint16_t pixels[screenWidth]) {    if (raster_y >= screenHeight) return;    int map_row_offset = (raster_y / TILE_HEIGHT) * 20;    int line_offset = raster_y % TILE_HEIGHT;    for (int x = 0; x < 20; x++) {        uint8_t tile_number = map[map_row_offset + x];        uint16_t map_tile_palette_idx = map_tile_palettes[map_row_offset + x];        uint32_t line = tiles[tile_number][line_offset];        // Pre-calculate the highest pixel address (rightmost) in pixels.        // Can just decrement this pointer rather than recalculating for each of the 16 pixels.        uint16_t *pixel = &pixels[x * TILE_WIDTH + 15];        // Pre-calculate the palette which is appropriate for this sprite.        TilePalette *palette = &tile_palettes[map_tile_palette_idx];        // Perform the color extraction from line and the pixel update for each pixel at the same time to        // reduce register pressure. This saves extra memory reads/writes to recover pixel color values from the        // stack.        // I updated them in reverse order to simplify the calculation down to right shift by 2-bits and masking off        // the lower 2-bits (same operation for each pixel).        // Note, there is no color 0 checking here since a tile will draw color 0.        uint8_t cf = line & 0b11;        *pixel = palette->color[cf];        line >>= 2;        pixel--;        uint8_t ce = line & 0b11;        *pixel = palette->color[ce];        line >>= 2;        pixel--;        uint8_t cd = line & 0b11;        *pixel = palette->color[cd];        line >>= 2;        pixel--;        uint8_t cc = line & 0b11;        *pixel = palette->color[cc];        line >>= 2;        pixel--;        uint8_t cb = line & 0b11;        *pixel = palette->color[cb];        line >>= 2;        pixel--;        uint8_t ca = line & 0b11;        *pixel = palette->color[ca];        line >>= 2;        pixel--;        uint8_t c9 = line & 0b11;        *pixel = palette->color[c9];        line >>= 2;        pixel--;        uint8_t c8 = line & 0b11;        *pixel = palette->color[c8];        line >>= 2;        pixel--;        uint8_t c7 = line & 0b11;        *pixel = palette->color[c7];        line >>= 2;        pixel--;        uint8_t c6 = line & 0b11;        *pixel = palette->color[c6];        line >>= 2;        pixel--;        uint8_t c5 = line & 0b11;        *pixel = palette->color[c5];        line >>= 2;        pixel--;        uint8_t c4 = line & 0b11;        *pixel = palette->color[c4];        line >>= 2;        pixel--;        uint8_t c3 = line & 0b11;        *pixel = palette->color[c3];        line >>= 2;        pixel--;        uint8_t c2 = line & 0b11;        *pixel = palette->color[c2];        line >>= 2;        pixel--;        uint8_t c1 = line & 0b11;        *pixel = palette->color[c1];        line >>= 2;        pixel--;        uint8_t c0 = line & 0b11;        *pixel = palette->color[c0];    }}


Optimized version 2

Code:

void__no_inline_not_in_flash_func(drawMapOptimized2)(uint16_t screenWidth, uint16_t screenHeight, uint16_t raster_y, uint16_t pixels[screenWidth]) {    if (raster_y >= screenHeight) return;    int map_row_offset = (raster_y / TILE_HEIGHT) * 20;    int line_offset = raster_y % TILE_HEIGHT;    for (int x = 0; x < 20; x++) {        uint8_t tile_number = map[map_row_offset + x];        uint8_t tile_palette = map_tile_palettes[map_row_offset + x];        uint32_t line = tiles[tile_number][line_offset];        uint8_t c0 = ((line & 0b11000000000000000000000000000000) >> 30);        uint8_t c1 = ((line & 0b00110000000000000000000000000000) >> 28);        uint8_t c2 = ((line & 0b00001100000000000000000000000000) >> 26);        uint8_t c3 = ((line & 0b00000011000000000000000000000000) >> 24);        uint8_t c4 = ((line & 0b00000000110000000000000000000000) >> 22);        uint8_t c5 = ((line & 0b00000000001100000000000000000000) >> 20);        uint8_t c6 = ((line & 0b00000000000011000000000000000000) >> 18);        uint8_t c7 = ((line & 0b00000000000000110000000000000000) >> 16);        uint8_t c8 = ((line & 0b00000000000000001100000000000000) >> 14);        uint8_t c9 = ((line & 0b00000000000000000011000000000000) >> 12);        uint8_t ca = ((line & 0b00000000000000000000110000000000) >> 10);        uint8_t cb = ((line & 0b00000000000000000000001100000000) >> 8);        uint8_t cc = ((line & 0b00000000000000000000000011000000) >> 6);        uint8_t cd = ((line & 0b00000000000000000000000000110000) >> 4);        uint8_t ce = ((line & 0b00000000000000000000000000001100) >> 2);        uint8_t cf = ((line & 0b00000000000000000000000000000011) >> 0);        uint16_t *pixel = &pixels[x * TILE_WIDTH + 15];        *pixel = tile_palettes[tile_palette].color[cf];        pixel--;        *pixel = tile_palettes[tile_palette].color[ce];        pixel--;        *pixel = tile_palettes[tile_palette].color[cd];        pixel--;        *pixel = tile_palettes[tile_palette].color[cc];        pixel--;        *pixel = tile_palettes[tile_palette].color[cb];        pixel--;        *pixel = tile_palettes[tile_palette].color[ca];        pixel--;        *pixel = tile_palettes[tile_palette].color[c9];        pixel--;        *pixel = tile_palettes[tile_palette].color[c8];        pixel--;        *pixel = tile_palettes[tile_palette].color[c7];        pixel--;        *pixel = tile_palettes[tile_palette].color[c6];        pixel--;        *pixel = tile_palettes[tile_palette].color[c5];        pixel--;        *pixel = tile_palettes[tile_palette].color[c4];        pixel--;        *pixel = tile_palettes[tile_palette].color[c3];        pixel--;        *pixel = tile_palettes[tile_palette].color[c2];        pixel--;        *pixel = tile_palettes[tile_palette].color[c1];        pixel--;        *pixel = tile_palettes[tile_palette].color[c0];    }}


Original DIS

Code:

10000c00 <drawMap>:10000c00:b5f0      push{r4, r5, r6, r7, lr}10000c02:46de      movlr, fp10000c04:4657      movr7, sl10000c06:464e      movr6, r910000c08:4645      movr5, r810000c0a:b5e0      push{r5, r6, r7, lr}10000c0c:b08d      subsp, #52@ 0x3410000c0e:469a      movsl, r310000c10:428a      cmpr2, r110000c12:d300      bcc.n10000c16 <drawMap+0x16>10000c14:e0b9      b.n10000d8a <drawMap+0x18a>10000c16:0911      lsrsr1, r2, #410000c18:008b      lslsr3, r1, #210000c1a:185b      addsr3, r3, r110000c1c:009b      lslsr3, r3, #210000c1e:930b      strr3, [sp, #44]@ 0x2c10000c20:230f      movsr3, #1510000c22:4013      andsr3, r210000c24:930a      strr3, [sp, #40]@ 0x2810000c26:2300      movsr3, #010000c28:4651      movr1, sl10000c2a:469a      movsl, r310000c2c:e0a9      b.n10000d82 <drawMap+0x182>10000c2e:9b0b      ldrr3, [sp, #44]@ 0x2c10000c30:4453      addr3, sl10000c32:4a59      ldrr2, [pc, #356]@ (10000d98 <drawMap+0x198>)10000c34:5cd2      ldrbr2, [r2, r3]10000c36:4859      ldrr0, [pc, #356]@ (10000d9c <drawMap+0x19c>)10000c38:5cc3      ldrbr3, [r0, r3]10000c3a:4859      ldrr0, [pc, #356]@ (10000da0 <drawMap+0x1a0>)10000c3c:0112      lslsr2, r2, #410000c3e:9c0a      ldrr4, [sp, #40]@ 0x2810000c40:46a4      movip, r410000c42:4462      addr2, ip10000c44:0092      lslsr2, r2, #210000c46:5812      ldrr2, [r2, r0]10000c48:0f90      lsrsr0, r2, #3010000c4a:4681      movr9, r010000c4c:0f14      lsrsr4, r2, #2810000c4e:2003      movsr0, #310000c50:4004      andsr4, r010000c52:46a0      movr8, r410000c54:0e94      lsrsr4, r2, #2610000c56:4004      andsr4, r010000c58:46a4      movip, r410000c5a:0e17      lsrsr7, r2, #2410000c5c:4007      andsr7, r010000c5e:0d96      lsrsr6, r2, #2210000c60:4006      andsr6, r010000c62:9600      strr6, [sp, #0]10000c64:0d15      lsrsr5, r2, #2010000c66:4005      andsr5, r010000c68:0c94      lsrsr4, r2, #1810000c6a:4004      andsr4, r010000c6c:9401      strr4, [sp, #4]10000c6e:0c14      lsrsr4, r2, #1610000c70:4004      andsr4, r010000c72:9402      strr4, [sp, #8]10000c74:0b94      lsrsr4, r2, #1410000c76:4004      andsr4, r010000c78:9403      strr4, [sp, #12]10000c7a:0b14      lsrsr4, r2, #1210000c7c:4004      andsr4, r010000c7e:9404      strr4, [sp, #16]10000c80:0a94      lsrsr4, r2, #1010000c82:4004      andsr4, r010000c84:9405      strr4, [sp, #20]10000c86:0a14      lsrsr4, r2, #810000c88:4004      andsr4, r010000c8a:9406      strr4, [sp, #24]10000c8c:0994      lsrsr4, r2, #610000c8e:4004      andsr4, r010000c90:9407      strr4, [sp, #28]10000c92:0914      lsrsr4, r2, #410000c94:4004      andsr4, r010000c96:9408      strr4, [sp, #32]10000c98:0894      lsrsr4, r2, #210000c9a:4004      andsr4, r010000c9c:46a3      movfp, r410000c9e:4002      andsr2, r010000ca0:9209      strr2, [sp, #36]@ 0x2410000ca2:4650      movr0, sl10000ca4:0140      lslsr0, r0, #510000ca6:4a3f      ldrr2, [pc, #252]@ (10000da4 <drawMap+0x1a4>)10000ca8:009b      lslsr3, r3, #210000caa:4499      addr9, r310000cac:464c      movr4, r910000cae:0064      lslsr4, r4, #110000cb0:5aa4      ldrhr4, [r4, r2]10000cb2:520c      strhr4, [r1, r0]10000cb4:1c84      addsr4, r0, #210000cb6:46a1      movr9, r410000cb8:4498      addr8, r310000cba:4644      movr4, r810000cbc:0064      lslsr4, r4, #110000cbe:5aa4      ldrhr4, [r4, r2]10000cc0:46a0      movr8, r410000cc2:464c      movr4, r910000cc4:4646      movr6, r810000cc6:530e      strhr6, [r1, r4]10000cc8:1d06      addsr6, r0, #410000cca:46b0      movr8, r610000ccc:449c      addip, r310000cce:4666      movr6, ip10000cd0:0076      lslsr6, r6, #110000cd2:5ab6      ldrhr6, [r6, r2]10000cd4:46b4      movip, r610000cd6:4646      movr6, r810000cd8:4664      movr4, ip10000cda:538c      strhr4, [r1, r6]10000cdc:1d86      addsr6, r0, #610000cde:19df      addsr7, r3, r710000ce0:007f      lslsr7, r7, #110000ce2:5abf      ldrhr7, [r7, r2]10000ce4:538f      strhr7, [r1, r6]10000ce6:0007      movsr7, r010000ce8:3708      addsr7, #810000cea:9e00      ldrr6, [sp, #0]10000cec:199e      addsr6, r3, r610000cee:0076      lslsr6, r6, #110000cf0:5ab6      ldrhr6, [r6, r2]10000cf2:53ce      strhr6, [r1, r7]10000cf4:0006      movsr6, r010000cf6:360a      addsr6, #1010000cf8:195d      addsr5, r3, r510000cfa:006d      lslsr5, r5, #110000cfc:5aad      ldrhr5, [r5, r2]10000cfe:538d      strhr5, [r1, r6]10000d00:3602      addsr6, #210000d02:9c01      ldrr4, [sp, #4]10000d04:191c      addsr4, r3, r410000d06:0064      lslsr4, r4, #110000d08:5aa4      ldrhr4, [r4, r2]10000d0a:538c      strhr4, [r1, r6]10000d0c:3602      addsr6, #210000d0e:9d02      ldrr5, [sp, #8]10000d10:195d      addsr5, r3, r510000d12:006d      lslsr5, r5, #110000d14:5aad      ldrhr5, [r5, r2]10000d16:538d      strhr5, [r1, r6]10000d18:3602      addsr6, #210000d1a:9d03      ldrr5, [sp, #12]10000d1c:195d      addsr5, r3, r510000d1e:006d      lslsr5, r5, #110000d20:5aad      ldrhr5, [r5, r2]10000d22:538d      strhr5, [r1, r6]10000d24:3602      addsr6, #210000d26:9d04      ldrr5, [sp, #16]10000d28:195d      addsr5, r3, r510000d2a:006d      lslsr5, r5, #110000d2c:5aad      ldrhr5, [r5, r2]10000d2e:538d      strhr5, [r1, r6]10000d30:3602      addsr6, #210000d32:9d05      ldrr5, [sp, #20]10000d34:195d      addsr5, r3, r510000d36:006d      lslsr5, r5, #110000d38:5aad      ldrhr5, [r5, r2]10000d3a:538d      strhr5, [r1, r6]10000d3c:3602      addsr6, #210000d3e:9d06      ldrr5, [sp, #24]10000d40:195d      addsr5, r3, r510000d42:006d      lslsr5, r5, #110000d44:5aad      ldrhr5, [r5, r2]10000d46:538d      strhr5, [r1, r6]10000d48:0005      movsr5, r010000d4a:3518      addsr5, #2410000d4c:9c07      ldrr4, [sp, #28]10000d4e:191c      addsr4, r3, r410000d50:0064      lslsr4, r4, #110000d52:5aa4      ldrhr4, [r4, r2]10000d54:534c      strhr4, [r1, r5]10000d56:3502      addsr5, #210000d58:9c08      ldrr4, [sp, #32]10000d5a:191c      addsr4, r3, r410000d5c:0064      lslsr4, r4, #110000d5e:5aa4      ldrhr4, [r4, r2]10000d60:534c      strhr4, [r1, r5]10000d62:3502      addsr5, #210000d64:465e      movr6, fp10000d66:199c      addsr4, r3, r610000d68:0064      lslsr4, r4, #110000d6a:5aa4      ldrhr4, [r4, r2]10000d6c:534c      strhr4, [r1, r5]10000d6e:301e      addsr0, #3010000d70:9c09      ldrr4, [sp, #36]@ 0x2410000d72:46a4      movip, r410000d74:4463      addr3, ip10000d76:005b      lslsr3, r3, #110000d78:5a9b      ldrhr3, [r3, r2]10000d7a:520b      strhr3, [r1, r0]10000d7c:2301      movsr3, #110000d7e:469c      movip, r310000d80:44e2      addsl, ip10000d82:4653      movr3, sl10000d84:2b13      cmpr3, #1910000d86:dc00      bgt.n10000d8a <drawMap+0x18a>10000d88:e751      b.n10000c2e <drawMap+0x2e>10000d8a:b00d      addsp, #52@ 0x3410000d8c:bcf0      pop{r4, r5, r6, r7}10000d8e:46bb      movfp, r710000d90:46b2      movsl, r610000d92:46a9      movr9, r510000d94:46a0      movr8, r410000d96:bdf0      pop{r4, r5, r6, r7, pc}10000d98:20000604 .word0x2000060410000d9c:200004d8 .word0x200004d810000da0:200007f0 .word0x200007f010000da4:20000730 .word0x20000730

Optimized 1 DIS

Code:

10000c00 <drawMap>:10000c00:b5f0      push{r4, r5, r6, r7, lr}10000c02:46de      movlr, fp10000c04:4657      movr7, sl10000c06:464e      movr6, r910000c08:4645      movr5, r810000c0a:b5e0      push{r5, r6, r7, lr}10000c0c:469a      movsl, r310000c0e:428a      cmpr2, r110000c10:d300      bcc.n10000c14 <drawMap+0x14>10000c12:e0f3      b.n10000dfc <drawMap+0x1fc>10000c14:0911      lsrsr1, r2, #410000c16:008b      lslsr3, r1, #210000c18:185b      addsr3, r3, r110000c1a:009b      lslsr3, r3, #210000c1c:469b      movfp, r310000c1e:210f      movsr1, #1510000c20:4011      andsr1, r210000c22:468c      movip, r110000c24:2700      movsr7, #010000c26:e0e6      b.n10000df6 <drawMap+0x1f6>10000c28:465b      movr3, fp10000c2a:18f8      addsr0, r7, r310000c2c:4976      ldrr1, [pc, #472]@ (10000e08 <drawMap+0x208>)10000c2e:5c09      ldrbr1, [r1, r0]10000c30:4c76      ldrr4, [pc, #472]@ (10000e0c <drawMap+0x20c>)10000c32:5c20      ldrbr0, [r4, r0]10000c34:4c76      ldrr4, [pc, #472]@ (10000e10 <drawMap+0x210>)10000c36:0109      lslsr1, r1, #410000c38:4461      addr1, ip10000c3a:0089      lslsr1, r1, #210000c3c:590e      ldrr6, [r1, r4]10000c3e:0179      lslsr1, r7, #510000c40:311e      addsr1, #3010000c42:4451      addr1, sl10000c44:2503      movsr5, #310000c46:0034      movsr4, r610000c48:402c      andsr4, r510000c4a:46a0      movr8, r410000c4c:4c71      ldrr4, [pc, #452]@ (10000e14 <drawMap+0x214>)10000c4e:0080      lslsr0, r0, #210000c50:4480      addr8, r010000c52:4643      movr3, r810000c54:005b      lslsr3, r3, #110000c56:5b1b      ldrhr3, [r3, r4]10000c58:800b      strhr3, [r1, #0]10000c5a:08b3      lsrsr3, r6, #210000c5c:402b      andsr3, r510000c5e:4698      movr8, r310000c60:4480      addr8, r010000c62:4643      movr3, r810000c64:005b      lslsr3, r3, #110000c66:5b1b      ldrhr3, [r3, r4]10000c68:4699      movr9, r310000c6a:1e8b      subsr3, r1, #210000c6c:464a      movr2, r910000c6e:801a      strhr2, [r3, #0]10000c70:0933      lsrsr3, r6, #410000c72:402b      andsr3, r510000c74:4698      movr8, r310000c76:4480      addr8, r010000c78:4643      movr3, r810000c7a:005b      lslsr3, r3, #110000c7c:5b1b      ldrhr3, [r3, r4]10000c7e:4699      movr9, r310000c80:1f0b      subsr3, r1, #410000c82:464a      movr2, r910000c84:801a      strhr2, [r3, #0]10000c86:09b3      lsrsr3, r6, #610000c88:402b      andsr3, r510000c8a:4698      movr8, r310000c8c:4480      addr8, r010000c8e:4643      movr3, r810000c90:005b      lslsr3, r3, #110000c92:5b1b      ldrhr3, [r3, r4]10000c94:4699      movr9, r310000c96:1f8b      subsr3, r1, #610000c98:464a      movr2, r910000c9a:801a      strhr2, [r3, #0]10000c9c:0a33      lsrsr3, r6, #810000c9e:402b      andsr3, r510000ca0:4698      movr8, r310000ca2:4480      addr8, r010000ca4:4643      movr3, r810000ca6:005b      lslsr3, r3, #110000ca8:5b1b      ldrhr3, [r3, r4]10000caa:4699      movr9, r310000cac:2308      movsr3, #810000cae:425b      negsr3, r310000cb0:4698      movr8, r310000cb2:4488      addr8, r110000cb4:4643      movr3, r810000cb6:464a      movr2, r910000cb8:801a      strhr2, [r3, #0]10000cba:0ab3      lsrsr3, r6, #1010000cbc:402b      andsr3, r510000cbe:4698      movr8, r310000cc0:4480      addr8, r010000cc2:4643      movr3, r810000cc4:005b      lslsr3, r3, #110000cc6:5b1b      ldrhr3, [r3, r4]10000cc8:4699      movr9, r310000cca:230a      movsr3, #1010000ccc:425b      negsr3, r310000cce:4698      movr8, r310000cd0:4488      addr8, r110000cd2:4643      movr3, r810000cd4:464a      movr2, r910000cd6:801a      strhr2, [r3, #0]10000cd8:0b33      lsrsr3, r6, #1210000cda:402b      andsr3, r510000cdc:4698      movr8, r310000cde:4480      addr8, r010000ce0:4643      movr3, r810000ce2:005b      lslsr3, r3, #110000ce4:5b1b      ldrhr3, [r3, r4]10000ce6:4699      movr9, r310000ce8:230c      movsr3, #1210000cea:425b      negsr3, r310000cec:4698      movr8, r310000cee:4488      addr8, r110000cf0:4643      movr3, r810000cf2:464a      movr2, r910000cf4:801a      strhr2, [r3, #0]10000cf6:0bb3      lsrsr3, r6, #1410000cf8:402b      andsr3, r510000cfa:4698      movr8, r310000cfc:4480      addr8, r010000cfe:4643      movr3, r810000d00:005b      lslsr3, r3, #110000d02:5b1b      ldrhr3, [r3, r4]10000d04:4699      movr9, r310000d06:230e      movsr3, #1410000d08:425b      negsr3, r310000d0a:4698      movr8, r310000d0c:4488      addr8, r110000d0e:4643      movr3, r810000d10:464a      movr2, r910000d12:801a      strhr2, [r3, #0]10000d14:0c33      lsrsr3, r6, #1610000d16:402b      andsr3, r510000d18:4698      movr8, r310000d1a:4480      addr8, r010000d1c:4643      movr3, r810000d1e:005b      lslsr3, r3, #110000d20:5b1b      ldrhr3, [r3, r4]10000d22:4699      movr9, r310000d24:2310      movsr3, #1610000d26:425b      negsr3, r310000d28:4698      movr8, r310000d2a:4488      addr8, r110000d2c:4643      movr3, r810000d2e:464a      movr2, r910000d30:801a      strhr2, [r3, #0]10000d32:0cb3      lsrsr3, r6, #1810000d34:402b      andsr3, r510000d36:4698      movr8, r310000d38:4480      addr8, r010000d3a:4643      movr3, r810000d3c:005b      lslsr3, r3, #110000d3e:5b1b      ldrhr3, [r3, r4]10000d40:4699      movr9, r310000d42:2312      movsr3, #1810000d44:425b      negsr3, r310000d46:4698      movr8, r310000d48:4488      addr8, r110000d4a:4643      movr3, r810000d4c:464a      movr2, r910000d4e:801a      strhr2, [r3, #0]10000d50:0d33      lsrsr3, r6, #2010000d52:402b      andsr3, r510000d54:4698      movr8, r310000d56:4480      addr8, r010000d58:4643      movr3, r810000d5a:005b      lslsr3, r3, #110000d5c:5b1b      ldrhr3, [r3, r4]10000d5e:4699      movr9, r310000d60:2314      movsr3, #2010000d62:425b      negsr3, r310000d64:4698      movr8, r310000d66:4488      addr8, r110000d68:4643      movr3, r810000d6a:464a      movr2, r910000d6c:801a      strhr2, [r3, #0]10000d6e:0db3      lsrsr3, r6, #2210000d70:402b      andsr3, r510000d72:4698      movr8, r310000d74:4480      addr8, r010000d76:4643      movr3, r810000d78:005b      lslsr3, r3, #110000d7a:5b1b      ldrhr3, [r3, r4]10000d7c:4699      movr9, r310000d7e:2316      movsr3, #2210000d80:425b      negsr3, r310000d82:4698      movr8, r310000d84:4488      addr8, r110000d86:4643      movr3, r810000d88:464a      movr2, r910000d8a:801a      strhr2, [r3, #0]10000d8c:0e33      lsrsr3, r6, #2410000d8e:402b      andsr3, r510000d90:4698      movr8, r310000d92:4480      addr8, r010000d94:4643      movr3, r810000d96:005b      lslsr3, r3, #110000d98:5b1b      ldrhr3, [r3, r4]10000d9a:4699      movr9, r310000d9c:2318      movsr3, #2410000d9e:425b      negsr3, r310000da0:4698      movr8, r310000da2:4488      addr8, r110000da4:4643      movr3, r810000da6:464a      movr2, r910000da8:801a      strhr2, [r3, #0]10000daa:0eb3      lsrsr3, r6, #2610000dac:402b      andsr3, r510000dae:4698      movr8, r310000db0:4480      addr8, r010000db2:4643      movr3, r810000db4:005b      lslsr3, r3, #110000db6:5b1b      ldrhr3, [r3, r4]10000db8:4699      movr9, r310000dba:231a      movsr3, #2610000dbc:425b      negsr3, r310000dbe:4698      movr8, r310000dc0:4488      addr8, r110000dc2:4643      movr3, r810000dc4:464a      movr2, r910000dc6:801a      strhr2, [r3, #0]10000dc8:0f33      lsrsr3, r6, #2810000dca:402b      andsr3, r510000dcc:4698      movr8, r310000dce:4480      addr8, r010000dd0:4643      movr3, r810000dd2:005b      lslsr3, r3, #110000dd4:5b1b      ldrhr3, [r3, r4]10000dd6:4699      movr9, r310000dd8:231c      movsr3, #2810000dda:425b      negsr3, r310000ddc:4698      movr8, r310000dde:4488      addr8, r110000de0:4643      movr3, r810000de2:464a      movr2, r910000de4:801a      strhr2, [r3, #0]10000de6:0fb6      lsrsr6, r6, #3010000de8:4035      andsr5, r610000dea:1940      addsr0, r0, r510000dec:0040      lslsr0, r0, #110000dee:5b00      ldrhr0, [r0, r4]10000df0:391e      subsr1, #3010000df2:8008      strhr0, [r1, #0]10000df4:3701      addsr7, #110000df6:2f13      cmpr7, #1910000df8:dc00      bgt.n10000dfc <drawMap+0x1fc>10000dfa:e715      b.n10000c28 <drawMap+0x28>10000dfc:bcf0      pop{r4, r5, r6, r7}10000dfe:46bb      movfp, r710000e00:46b2      movsl, r610000e02:46a9      movr9, r510000e04:46a0      movr8, r410000e06:bdf0      pop{r4, r5, r6, r7, pc}10000e08:20000604 .word0x2000060410000e0c:200004d8 .word0x200004d810000e10:200007f0 .word0x200007f010000e14:20000730 .word0x20000730


Optimized 2 DIS

Code:

10000c00 <drawMap>:10000c00:b5f0      push{r4, r5, r6, r7, lr}10000c02:46de      movlr, fp10000c04:4657      movr7, sl10000c06:464e      movr6, r910000c08:4645      movr5, r810000c0a:b5e0      push{r5, r6, r7, lr}10000c0c:b08d      subsp, #52@ 0x3410000c0e:9309      strr3, [sp, #36]@ 0x2410000c10:428a      cmpr2, r110000c12:d300      bcc.n10000c16 <drawMap+0x16>10000c14:e0ba      b.n10000d8c <drawMap+0x18c>10000c16:0911      lsrsr1, r2, #410000c18:008b      lslsr3, r1, #210000c1a:185b      addsr3, r3, r110000c1c:009b      lslsr3, r3, #210000c1e:930b      strr3, [sp, #44]@ 0x2c10000c20:230f      movsr3, #1510000c22:4013      andsr3, r210000c24:930a      strr3, [sp, #40]@ 0x2810000c26:2300      movsr3, #010000c28:469c      movip, r310000c2a:e0ab      b.n10000d84 <drawMap+0x184>10000c2c:9a0b      ldrr2, [sp, #44]@ 0x2c10000c2e:4462      addr2, ip10000c30:4b5a      ldrr3, [pc, #360]@ (10000d9c <drawMap+0x19c>)10000c32:5c9b      ldrbr3, [r3, r2]10000c34:495a      ldrr1, [pc, #360]@ (10000da0 <drawMap+0x1a0>)10000c36:5c8a      ldrbr2, [r1, r2]10000c38:495a      ldrr1, [pc, #360]@ (10000da4 <drawMap+0x1a4>)10000c3a:011b      lslsr3, r3, #410000c3c:980a      ldrr0, [sp, #40]@ 0x2810000c3e:4680      movr8, r010000c40:4443      addr3, r810000c42:009b      lslsr3, r3, #210000c44:5859      ldrr1, [r3, r1]10000c46:0f8b      lsrsr3, r1, #3010000c48:9300      strr3, [sp, #0]10000c4a:0f08      lsrsr0, r1, #2810000c4c:2303      movsr3, #310000c4e:4018      andsr0, r310000c50:9001      strr0, [sp, #4]10000c52:0e88      lsrsr0, r1, #2610000c54:4018      andsr0, r310000c56:9002      strr0, [sp, #8]10000c58:0e08      lsrsr0, r1, #2410000c5a:0005      movsr5, r010000c5c:401d      andsr5, r310000c5e:9503      strr5, [sp, #12]10000c60:0d88      lsrsr0, r1, #2210000c62:0006      movsr6, r010000c64:401e      andsr6, r310000c66:9604      strr6, [sp, #16]10000c68:0d08      lsrsr0, r1, #2010000c6a:0007      movsr7, r010000c6c:401f      andsr7, r310000c6e:9705      strr7, [sp, #20]10000c70:0c88      lsrsr0, r1, #1810000c72:4018      andsr0, r310000c74:9006      strr0, [sp, #24]10000c76:0c0c      lsrsr4, r1, #1610000c78:401c      andsr4, r310000c7a:9407      strr4, [sp, #28]10000c7c:0b8d      lsrsr5, r1, #1410000c7e:401d      andsr5, r310000c80:0b0e      lsrsr6, r1, #1210000c82:401e      andsr6, r310000c84:0a8f      lsrsr7, r1, #1010000c86:401f      andsr7, r310000c88:0a08      lsrsr0, r1, #810000c8a:4018      andsr0, r310000c8c:9008      strr0, [sp, #32]10000c8e:0988      lsrsr0, r1, #610000c90:4018      andsr0, r310000c92:4681      movr9, r010000c94:0908      lsrsr0, r1, #410000c96:4018      andsr0, r310000c98:4682      movsl, r010000c9a:0888      lsrsr0, r1, #210000c9c:4018      andsr0, r310000c9e:4683      movfp, r010000ca0:4019      andsr1, r310000ca2:4663      movr3, ip10000ca4:015b      lslsr3, r3, #510000ca6:331e      addsr3, #3010000ca8:9809      ldrr0, [sp, #36]@ 0x2410000caa:4680      movr8, r010000cac:4443      addr3, r810000cae:483e      ldrr0, [pc, #248]@ (10000da8 <drawMap+0x1a8>)10000cb0:0092      lslsr2, r2, #210000cb2:1851      addsr1, r2, r110000cb4:0049      lslsr1, r1, #110000cb6:5a09      ldrhr1, [r1, r0]10000cb8:8019      strhr1, [r3, #0]10000cba:4659      movr1, fp10000cbc:1851      addsr1, r2, r110000cbe:0049      lslsr1, r1, #110000cc0:5a09      ldrhr1, [r1, r0]10000cc2:468b      movfp, r110000cc4:1e99      subsr1, r3, #210000cc6:465c      movr4, fp10000cc8:800c      strhr4, [r1, #0]10000cca:4654      movr4, sl10000ccc:1911      addsr1, r2, r410000cce:0049      lslsr1, r1, #110000cd0:5a0c      ldrhr4, [r1, r0]10000cd2:1f19      subsr1, r3, #410000cd4:800c      strhr4, [r1, #0]10000cd6:464c      movr4, r910000cd8:1911      addsr1, r2, r410000cda:0049      lslsr1, r1, #110000cdc:5a0c      ldrhr4, [r1, r0]10000cde:1f99      subsr1, r3, #610000ce0:800c      strhr4, [r1, #0]10000ce2:9c08      ldrr4, [sp, #32]10000ce4:1911      addsr1, r2, r410000ce6:0049      lslsr1, r1, #110000ce8:5a0c      ldrhr4, [r1, r0]10000cea:0019      movsr1, r310000cec:3908      subsr1, #810000cee:800c      strhr4, [r1, #0]10000cf0:19d7      addsr7, r2, r710000cf2:007f      lslsr7, r7, #110000cf4:5a3f      ldrhr7, [r7, r0]10000cf6:3902      subsr1, #210000cf8:800f      strhr7, [r1, #0]10000cfa:1996      addsr6, r2, r610000cfc:0076      lslsr6, r6, #110000cfe:5a36      ldrhr6, [r6, r0]10000d00:3902      subsr1, #210000d02:800e      strhr6, [r1, #0]10000d04:1955      addsr5, r2, r510000d06:006d      lslsr5, r5, #110000d08:5a2d      ldrhr5, [r5, r0]10000d0a:3902      subsr1, #210000d0c:800d      strhr5, [r1, #0]10000d0e:9907      ldrr1, [sp, #28]10000d10:1854      addsr4, r2, r110000d12:0064      lslsr4, r4, #110000d14:5a24      ldrhr4, [r4, r0]10000d16:0019      movsr1, r310000d18:3910      subsr1, #1610000d1a:800c      strhr4, [r1, #0]10000d1c:9906      ldrr1, [sp, #24]10000d1e:1851      addsr1, r2, r110000d20:0049      lslsr1, r1, #110000d22:5a0c      ldrhr4, [r1, r0]10000d24:0019      movsr1, r310000d26:3912      subsr1, #1810000d28:800c      strhr4, [r1, #0]10000d2a:9f05      ldrr7, [sp, #20]10000d2c:19d1      addsr1, r2, r710000d2e:0049      lslsr1, r1, #110000d30:5a0c      ldrhr4, [r1, r0]10000d32:0019      movsr1, r310000d34:3914      subsr1, #2010000d36:800c      strhr4, [r1, #0]10000d38:9e04      ldrr6, [sp, #16]10000d3a:1991      addsr1, r2, r610000d3c:0049      lslsr1, r1, #110000d3e:5a0c      ldrhr4, [r1, r0]10000d40:0019      movsr1, r310000d42:3916      subsr1, #2210000d44:800c      strhr4, [r1, #0]10000d46:9d03      ldrr5, [sp, #12]10000d48:1951      addsr1, r2, r510000d4a:0049      lslsr1, r1, #110000d4c:5a0c      ldrhr4, [r1, r0]10000d4e:0019      movsr1, r310000d50:3918      subsr1, #2410000d52:800c      strhr4, [r1, #0]10000d54:9c02      ldrr4, [sp, #8]10000d56:1911      addsr1, r2, r410000d58:0049      lslsr1, r1, #110000d5a:5a0c      ldrhr4, [r1, r0]10000d5c:0019      movsr1, r310000d5e:391a      subsr1, #2610000d60:800c      strhr4, [r1, #0]10000d62:9901      ldrr1, [sp, #4]10000d64:1851      addsr1, r2, r110000d66:0049      lslsr1, r1, #110000d68:5a0c      ldrhr4, [r1, r0]10000d6a:0019      movsr1, r310000d6c:391c      subsr1, #2810000d6e:800c      strhr4, [r1, #0]10000d70:9900      ldrr1, [sp, #0]10000d72:4688      movr8, r110000d74:4442      addr2, r810000d76:0052      lslsr2, r2, #110000d78:5a12      ldrhr2, [r2, r0]10000d7a:3b1e      subsr3, #3010000d7c:801a      strhr2, [r3, #0]10000d7e:2301      movsr3, #110000d80:4698      movr8, r310000d82:44c4      addip, r810000d84:4663      movr3, ip10000d86:2b13      cmpr3, #1910000d88:dc00      bgt.n10000d8c <drawMap+0x18c>10000d8a:e74f      b.n10000c2c <drawMap+0x2c>10000d8c:b00d      addsp, #52@ 0x3410000d8e:bcf0      pop{r4, r5, r6, r7}10000d90:46bb      movfp, r710000d92:46b2      movsl, r610000d94:46a9      movr9, r510000d96:46a0      movr8, r410000d98:bdf0      pop{r4, r5, r6, r7, pc}10000d9a:46c0      nop@ (mov r8, r8)10000d9c:20000604 .word0x2000060410000da0:200004d8 .word0x200004d810000da4:200007f0 .word0x200007f010000da8:20000730 .word0x20000730

Statistics: Posted by cbmeeks — Fri Jul 26, 2024 2:16 pm



Viewing all articles
Browse latest Browse all 4854

Trending Articles