save_flags.asm 592 B

123456789101112131415161718192021222324252627282930313233343536
  1. main:
  2. mov r0, #0x9
  3. lsl r0, r0, #0x8
  4. cmp r4, r0
  5. blt normal
  6. mov r0, #0x19
  7. lsl r0, r0, #0x8
  8. cmp r4, r0
  9. bge noget
  10. mov r0, #0x9
  11. lsl r0, r0, #0x8
  12. sub r4, r4, r0
  13. add r6, r4, #0x0
  14. str r4, [sp, #0x0]
  15. ldr r0, .memoryblock
  16. lsr r1, r6, #0x3
  17. add r0, r0, r1
  18. exit: pop {r4-r6}
  19. pop {r1}
  20. bx r1
  21. normal: ldr r0, .normalmemoryblock
  22. ldr r0, [r0, #0x0]
  23. there: lsr r1, r6, #0x3
  24. mov r3, #0xEE
  25. lsl r3, r3, #0x4
  26. add r1, r1, r3
  27. add r0, r0, r1
  28. b exit
  29. noget: add r0, r4, #0x0
  30. b there
  31. .align
  32. .memoryblock:
  33. .word 0x0203e200
  34. .normalmemoryblock:
  35. .word 0x03005008