Skip to content

Instantly share code, notes, and snippets.

@TrungNguyen1909
Created March 19, 2020 08:36
Show Gist options
  • Save TrungNguyen1909/b9d7752ecd27e350f8067d50dbe67ea6 to your computer and use it in GitHub Desktop.
Save TrungNguyen1909/b9d7752ecd27e350f8067d50dbe67ea6 to your computer and use it in GitHub Desktop.
Double a number in ARM
.section .text
.global _start
atoi:
push {fp, lr}
mov fp, sp
push {r6, r8, r9, r10}
add r2, r0, r1
add r8, r0, #0
mov r10, #0
mov r6, #10
loop_atoi:
ldr r9, [r8]
and r9, #0xff
cmp r9, #0x30
blt end_atoi
cmp r9, #0x39
bgt end_atoi
sub r9, #0x30
mla r10, r6, r10, r9
add r8, #1
b loop_atoi
end_atoi:
mov r0, r10
pop {r6, r8, r9, r10}
pop {fp, pc}
itoa:
push {fp, lr}
mov fp, sp
push {r8, r9, r10}
mov r8, #0
mov r9, #0
mov r10, #0
ldr r6, =0x1999999a
loop_itoa:
mov r4, r0
ldr r2,=0xcccccccd
umull r0,r5,r4,r2
mov r0,r5,lsr #3
mov r6, #10
mul r5, r0, r6
sub r8, r4, r5
add r8, r8, #0x30
lsl r10, r10, #8
orr r10, r10, r8
add r9, #1
cmp r0, #0
bne loop_itoa
end_itoa:
str r10, [r1]
mov r0, r9
pop {r8, r9, r10}
pop {fp, pc}
_start:
push {fp, lr}
mov fp, sp
sub sp, sp, #16
mov r0, #0
mov r1, sp
mov r2, #4
mov r7, #3
swi 0x0
mov r1, r0
mov r0, sp
bl atoi
lsl r0, r0, #1
mov r1, sp
bl itoa
add r1, sp, r0
mov r2, #0xa
str r2, [r1]
mov r1, sp
add r2, r0, #1
mov r0, #1
mov r7, #4
swi 0x0
mov r0, #0
mov r7, #1
swi 0x0
hlt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment