I am a university student learning how to write assembly code for the ARM platform (ARM v1.2).
First, I wrote this program in C:
#include <stdio.h>
#include <math.h>
int main()
{
int M, N;
int count = 0;
scanf("%d %d", &M, &N);
for(int k = M; k<N+1; k++){
int T = sqrt(k);
for(int i = 2; i<T+1; i++){
if(k % i == 0){
break;
}
if(i == T){
count++;
break;
}
}
}
printf("%d", count);
return 0;
}
Now I want to convert it into ARM assembly language (ARM v1.2).
I already wrote the scanf
and printf
part as follows:
AREA text, CODE
EXPORT print
EXPORT scan
EXPORT print_char
print
;Entry: Takes char in r0
;Conforms to APCS
;Call SYS_WRITEC, with r1 containing a POINTER TO a character
;SYS_WRITEC = 3, SYS_WRITE0 = 4, SYS_READC = 7
stmfd sp!, {r4-r12, lr}
mov r1, r0
mov r0, #4
swi 0x123456
ldmfd sp!, {r4-r12, pc}
scan
stmfd sp!, {lr}
mov r0, #7
swi 0x123456
ldmfd sp!, {pc}
print_char
stmfd sp!, {r0, lr}
; push the register that
; you want to save
adr r1, char
strb r0, [r1]
mov r0, #3
swi 0x123456
ldmfd sp!, {r0,pc}
char DCB 0
How can I proceed to convert the rest of the code?
I appreciate any feedback, even rough ideas.
Thank you for reading my question.
Addendum:
ARM v1.2 refers to
ARM®, Developer Suite, Version 1.2, Assembler Guide, Copyright © 2000, 2001 ARM Limited.