Mercurial > repos > rhope
diff kernel.rhope @ 101:f4fc0a98088a
Fixed some bugs that were preventing compiled compiler from working correctly. Need to address memory usage
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 09 Aug 2010 23:53:20 -0400 |
parents | f51c4c17457c |
children | 8aedae4f4ddd |
line wrap: on
line diff
--- a/kernel.rhope Mon Aug 09 02:03:57 2010 -0400 +++ b/kernel.rhope Mon Aug 09 23:53:20 2010 -0400 @@ -55,51 +55,86 @@ read[filedes(Int32,Naked),buf(Array,Raw Pointer,Mutable),nbyte(Int64,Naked):read(Int64,Naked),buf] } -_String 32[n,buf:out] +Trunc UInt8@UInt8[in:out] { - If[[n] < [10u32]] + out <- in +} + +__String Int[n,buf,ten:out] +{ + If[[n] < [ten]] { byte <- [[n]Trunc UInt8] + [48u8] out <- [buf]Append[byte] }{ - next <- [n]/[10u32] + next <- [n]/[ten] - byte <- [[[n]-[[next]*[10u32]]]Trunc UInt8] + [48u8] - out <- [_String 32[next, buf]]Append[byte] + byte <- [[[n]-[[next]*[ten]]]Trunc UInt8] + [48u8] + out <- [__String Int[next, buf, ten]]Append[byte] } } -_String Int32[n:out] +_String Int[n,zero,ten:out] { - If[[n] < [0i32]] + If[[n] < [zero]] { buf <- [Array[]]Append[45u8] }{ buf <- Array[] } val <- Abs UInt[n] - out <- _String 32[val, buf] + out <- __String Int[val, buf, ten] +} + +String@Int64[n:out] +{ + out <- String[_String Int[n, 0i64, 10u64]] +} + +String@UInt64[n:out] +{ + out <- String[__String Int[n, Array[], 10u64]] } String@Int32[n:out] { - out <- String[_String Int32[n]] + out <- String[_String Int[n, 0i32, 10u32]] +} + +String@UInt32[n:out] +{ + out <- String[__String Int[n, Array[], 10u32]] +} + +String@Int16[n:out] +{ + out <- String[_String Int[n, 0i16, 10u16]] +} + +String@UInt16[n:out] +{ + out <- String[__String Int[n, Array[], 10u16]] +} + +String@Int8[n:out] +{ + out <- String[_String Int[n, 0i8, 10u8]] +} + +String@UInt8[n:out] +{ + out <- String[__String Int[n, Array[], 10u8]] } Print@Int32[n:out] { - fbuf <- [_String Int32[n]]Append[10u8] + fbuf <- [_String Int[n, 0i32, 10u32]]Append[10u8] out <- write[1i32, fbuf, Int64[[fbuf]Length >>]] } -String@UInt32[n:out] -{ - out <- String[_String 32[n, Array[]]] -} - Print@UInt32[n:out] { - fbuf <- [_String 32[n, Array[]]]Append[10u8] + fbuf <- [__String Int[n, Array[], 10u32]]Append[10u8] out <- write[1i32, fbuf, Int64[[fbuf]Length >>]] }