Arvorezinha - ARM Assembly
Boas noites!
Venho de novo dar continuação à saga da arvorezinha, desta vez em ARM assembly para Linux. Esta foi relativamente simples, mas também depois de se ter feito em tantos tipos de arches já não há muito a diferir :-P
Aqui segue o código:
.equ SYSCALL_BASE, 0x900000
.equ SYSCALL_EXIT, 1
.equ SYSCALL_WRITE, 4
.text
.align 2
.globl _start
_start:
mov r0,#5 @ total = 5
mov r1,#0 @ counter1 = 0
_ciclo1:
cmp r0,r1 @ compara c1 e tot
beq _exit @ se for igual sai
mov r2,#0 @ counter2 = 0
_ciclo2:
cmp r2,r1 @ compara c1 e c2
beq _estrela @ se for igual _estrela
blt _estrela @ se for menor _estrela
stmfd sp!, {r0-r2} @ guarda r0 a r2 na stack
adr r1,newline @ le \n
bl _print @ imprime
ldmfd sp!, {r0-r2} @ le da stack r0 a r2
add r1,r1,#1 @ incrementa c1
b _ciclo1 @ salta _ciclo1
_estrela:
stmfd sp!, {r0-r2} @ guarda r0 a r2 na stack
adr r1,estrela @ le *
bl _print @ imprime
ldmfd sp!, {r0-r2} @ le da stack r0 a r2
add r2,r2,#1 @ incrementa c2
b _ciclo2 @ salta _ciclo2
_exit:
mov r0,#0 @ resultado e' 0
swi SYSCALL_BASE+SYSCALL_EXIT @ sai
_print:
mov r0,#1 @ 1 == stadout
mov r2,#1 @ tamanho da string
swi SYSCALL_BASE+SYSCALL_WRITE @ imprime
bx r14 @ return
estrela:.string "*"
newline:.string "\n"
E aqui a prova-dos-nove:
:~/arvorezinha-arm$ cat /proc/cpuinfo
Processor : XScale-IXP42x Family rev 1 (v5b)
BogoMIPS : 266.24
Features : swp half thumb fastmult edsp
CPU implementer : 0x69
CPU architecture: 5TE
CPU variant : 0x0
CPU part : 0x41f
CPU revision : 1
Cache type : undefined 5
Cache clean : undefined 5
Cache lockdown : undefined 5
Cache format : Harvard
I size : 32768
I assoc : 32
I line length : 32
I sets : 32
D size : 32768
D assoc : 32
D line length : 32
D sets : 32
Hardware : Linksys NSLU2
Revision : 0000
Serial : 0000000000000000
:~/arvorezinha-arm$ make
rm -f arvorezinha.o arvorezinha *~
Using fallback suid method
as -o arvorezinha.o arvorezinha.arm.s
ld -o arvorezinha arvorezinha.o
:~/arvorezinha-arm$ ./arvorezinha
*
**
***
****
*****
:~/arvorezinha-arm$
Download do projecto: arvorezinha-arm.tar.
2 comentários a “Arvorezinha - ARM Assembly”