# ruff: noqa: F821 - @asm_thumb decorator adds names to function scope @micropython.asm_thumb def asm_sum_words(r0, r1): # r0 = len # r1 = ptr # r2 = sum # r3 = dummy mov(r2, 0) b(loop_entry) label(loop1) ldr(r3, [r1, 0]) add(r2, r2, r3) add(r1, r1, 4) sub(r0, r0, 1) label(loop_entry) cmp(r0, 0) bgt(loop1) mov(r0, r2) @micropython.asm_thumb def asm_sum_bytes(r0, r1): # r0 = len # r1 = ptr # r2 = sum # r3 = dummy mov(r2, 0) b(loop_entry) label(loop1) ldrb(r3, [r1, 0]) add(r2, r2, r3) add(r1, r1, 1) sub(r0, r0, 1) label(loop_entry) cmp(r0, 0) bgt(loop1) mov(r0, r2) import array b = array.array("l", (100, 200, 300, 400)) n = asm_sum_words(len(b), b) print(b, n) b = array.array("b", (10, 20, 30, 40, 50, 60, 70, 80)) n = asm_sum_bytes(len(b), b) print(b, n)