.section .text.boot, "ax" .global _start _start: add x1, x0, #64 ldr x2, [x1] // base ldr x3, [x1, #16] // width ldr x4, [x1, #24] // height mul x5, x3, x4 mov x7, #5 udiv x10, x5, x7 // stripe size // 0x00RRGGBB // lblue: 5B CE FA mov w11, #0xCEFA movk w11, #0x5B, lsl #16 // pink: F5 A7 B8 mov w12, #0xA7B8 movk w12, #0xF5, lsl #16 // white: FF FF FF mov w13, #0xFFFF movk w13, #0xFF, lsl #16 mov x14, #0 // pixels in curr stripe mov x15, #0 // stripe index fill_loop: cbz x5, done cmp x15, #0 b.eq set_blue cmp x15, #1 b.eq set_pink cmp x15, #2 b.eq set_white cmp x15, #3 b.eq set_pink b set_blue set_blue: mov w6, w11; b draw set_pink: mov w6, w12; b draw set_white: mov w6, w13 draw: str w6, [x2], #4 sub x5, x5, #1 add x14, x14, #1 cmp x14, x10 b.lt fill_loop mov x14, #0 add x15, x15, #1 b fill_loop done: b done