add LCC - a better C-Compiler for WEGA
This commit is contained in:
parent
a456e1b61f
commit
5db4caa3bc
|
|
@ -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
|
||||||
|
}
|
||||||
|
|
@ -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
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue