Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .text
- .global generate_pgm
- /*
- &image r0
- width r1
- height r2
- R r3
- G r4
- B r5
- */
- generate_pgm:
- push {r11, lr}
- add r11, sp, #0
- push {r4, lr}
- push {r5, lr}
- push {r6, lr}
- push {r8, lr}
- push {r9, lr}
- push {r10, lr}
- ldrb r4, [r11, #4]
- ldrb r5, [r11, #8]
- mov r8, #0 @ current index
- _calc_row:
- mul r6, r1, r2 @ size of the image
- cmp r8, r6 @ check if processed entire image
- bge _end
- mov r6, #0 @ r6 = accumulator
- mov r10, #3
- mul r9, r8, r10
- add r9, r0, r9 @ r9 = current addressgłówni
- ldrb r10, [r9] @ R value
- mul r10, r3, r10
- add r6, r10, r6 @ r6 += R * R_multiplier
- add r9, r9, #1
- ldrb r10, [r9] @ G value
- mul r10, r4, r10
- add r6, r10, r6 @ r6 += G * RG_multiplier
- add r9, r9, #1
- ldrb r10, [r9] @ B value
- mul r10, r5, r10
- add r6, r10, r6 @ r6 += B * B_multiplier
- mov r6, r6, LSR #8 @ r6 /= 256
- mov r10, #3
- mul r9, r8, r10
- add r9, r0, r9
- strb r6, [r9] @ store r6 value
- add r8, r8, #1
- b _calc_row
- _end:
- pop {r10}
- pop {r9}
- pop {r8}
- pop {r6}
- pop {r5}
- pop {r4}
- add sp, r11, #0
- pop {r11}
- bx lr
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement