Sparc Assembly, what can be said about it....
Ok, so we have a RISC architecture, which is really supposed to have code generated for it by compilers, so what do we do? none other than learn how to code assembly on it *grins*.
I guess the best place to start would be none other than hello world:
hello.s <---Not actually part of the code, just to give an example of how to name the files...
.align 4
.global main
main:
mov 0,%o0
set string %o1
mov 14,%o2
mov 4,%g1
ta 0
mov 0,%o0
mov 1,%g1
ta 0
.align 8
string:
.asciz "Hello, World!\n"
That should be compilable using gcc, but I make no guarantees that something didn't go wrong with transferring it across. Also, this code is intended for
Solaris, but it'll probably still work on something like
NetBSD as I think it's using the
SunOS compatability
syscalls
Now, for some more useful code (I guess...), something a but more useful, how to print out a fibonacci sequence (although I think there are still some errors in here):
fib.s
.align 4
.global main
main:
save %sp,-112,%sp
mov 0,%l0 ! int i=0
mov 1,%l1 ! int j=1
mov 20,%l2 ! int max=20
mov 0,%l3 ! int count=0
! %l4 is our temp variable
set message,%o0
mov %l2,%o1
call printf ! display a message of our intentions
nop
loop: ! do{
set nummess,%o0
mov %l0,%o1
call printf ! printf("%d\n", i)
nop
inc %l3 ! count++
add %l0,%l1,%l4 ! temp=i+j
mov %l1,%l0 ! j=i
mov %l4,%l1 ! i=temp
cmp %l3,%l2
bl loop ! } while(count < max)
nop
mov 0,%o0
call exit ! exit(0)
nop
ret
restore
.section ".rodata"
.align 8
message:
.asciz "The first %d fibonacci numbers are:\n"
nummess:
.asciz "%d\n"
I hope that shows that some C can be converted into sparc assembly quite easily (or, atleast I thought so). Also, my writing this, taught me to not put out code done at 2am until it has been proofread after a good night sleep...