add LCC - a better C-Compiler for WEGA

This commit is contained in:
Oliver Lehmann 1990-03-14 21:11:41 +00:00
parent a456e1b61f
commit 5db4caa3bc
2 changed files with 69 additions and 0 deletions

View File

@ -0,0 +1,32 @@
//
// memset - set an array of nchars starting at s1 to the character c.
// Return s1.
//
// Input: s1 - destination
// c - initializing character
// n - number of bytes to copy
//
.seg
sp := r15
SP := rr14
.psec
.code
_memset::
{
ldm r2,|_stkseg+4|(sp),#4 // rr2 = s1
// r4 = c
// r5 = n
cp r5,#0
ret le
ldb @rr2,rl4
dec r5,#1
ret z
ldl rr6,rr2 // destination
inc r7,#1
ldl rr0,rr2
ldirb @rr6,@rr2,r5
ldl rr2,rr0
ret
}

View File

@ -0,0 +1,37 @@
// C library -- setjmp, longjmp
// longjmp(a,v)
// will generate a "return(v)" from
// the last call to
// setjmp(a)
// by restoring return_pc and r8-r15 from 'a'
// and doing a return.
//
.seg
sp := r15
SP := rr14
.psec
.code
_setjmp::
{
popl rr6,@SP // return addr
ldl rr4,@SP // a
ldm @rr4,r6,#10
xor r2,r2 // return 0
jp @rr6
}
_longjmp::
{
inc sp,#4
ldl rr4,@SP // a
ld r2,|_stkseg+4|(sp) // v
test r2
jr nz,~L1
ld r2,#1 // force v non-zero
~L1:
ldm r6,@rr4,#10
jp @rr6 // return v but as if from setjmp
}