Files
kernels/src/test/lib.s
chad afe15f4ff1 Fixed the assembler weirdness.
git-svn-id: http://www.cdkersey.com/harp/harptool@116 0246edb2-e076-4747-b392-db732a341fa2
2013-01-17 09:35:23 +00:00

51 lines
1.5 KiB
ArmAsm

/*******************************************************************************
HARPtools by Chad D. Kersey, Summer 2011
********************************************************************************
Sample HARP assmebly programs. These should work on anything from a 4x up.
*******************************************************************************/
/* Library: print decimals and strings! */
.perm x
.global
printdec: ldi %r8, #1;
shli %r8, %r8, (__WORD*8 - 1);
and %r6, %r8, %r7;
rtop @p0, %r6;
@p0 ? ldi %r6, #0x2d;
@p0 ? st %r6, %r8, #0;
@p0 ? neg %r7, %r7;
ldi %r9, #0;
printdec_l1: modi %r6, %r7, #10;
divi %r7, %r7, #10;
addi %r6, %r6, #0x30;
st %r6, %r9, digstack;
addi %r9, %r9, __WORD;
rtop @p0, %r7;
@p0 ? jmpi printdec_l1;
printdec_l2: subi %r9, %r9, __WORD;
ld %r6, %r9, digstack;
st %r6, %r8, #0;
rtop @p0, %r9;
@p0 ? jmpi printdec_l2;
ldi %r6, #0x0a;
st %r6, %r8, #0;
jmpr %r5
.global
puts: ldi %r8, #1;
shli %r8, %r8, (__WORD*8 - 1);
puts_l: ld %r6, %r7, #0;
andi %r6, %r6, #0xff;
rtop @p0, %r6;
notp @p0, @p0;
@p0 ? jmpi puts_end;
st %r6, %r8, #0;
addi %r7, %r7, #1;
jmpi puts_l;
puts_end: jmpr %r5
.perm rwx
digstack: .space 10