comparison 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
comparison
equal deleted inserted replaced
100:f51c4c17457c 101:f4fc0a98088a
53 { 53 {
54 write[filedes(Int32,Naked),buf(Array,Raw Pointer),nbyte(Int64,Naked):written(Int32,Naked)] 54 write[filedes(Int32,Naked),buf(Array,Raw Pointer),nbyte(Int64,Naked):written(Int32,Naked)]
55 read[filedes(Int32,Naked),buf(Array,Raw Pointer,Mutable),nbyte(Int64,Naked):read(Int64,Naked),buf] 55 read[filedes(Int32,Naked),buf(Array,Raw Pointer,Mutable),nbyte(Int64,Naked):read(Int64,Naked),buf]
56 } 56 }
57 57
58 _String 32[n,buf:out] 58 Trunc UInt8@UInt8[in:out]
59 { 59 {
60 If[[n] < [10u32]] 60 out <- in
61 }
62
63 __String Int[n,buf,ten:out]
64 {
65 If[[n] < [ten]]
61 { 66 {
62 byte <- [[n]Trunc UInt8] + [48u8] 67 byte <- [[n]Trunc UInt8] + [48u8]
63 out <- [buf]Append[byte] 68 out <- [buf]Append[byte]
64 }{ 69 }{
65 next <- [n]/[10u32] 70 next <- [n]/[ten]
66 71
67 byte <- [[[n]-[[next]*[10u32]]]Trunc UInt8] + [48u8] 72 byte <- [[[n]-[[next]*[ten]]]Trunc UInt8] + [48u8]
68 out <- [_String 32[next, buf]]Append[byte] 73 out <- [__String Int[next, buf, ten]]Append[byte]
69 } 74 }
70 } 75 }
71 76
72 _String Int32[n:out] 77 _String Int[n,zero,ten:out]
73 { 78 {
74 If[[n] < [0i32]] 79 If[[n] < [zero]]
75 { 80 {
76 buf <- [Array[]]Append[45u8] 81 buf <- [Array[]]Append[45u8]
77 }{ 82 }{
78 buf <- Array[] 83 buf <- Array[]
79 } 84 }
80 val <- Abs UInt[n] 85 val <- Abs UInt[n]
81 out <- _String 32[val, buf] 86 out <- __String Int[val, buf, ten]
87 }
88
89 String@Int64[n:out]
90 {
91 out <- String[_String Int[n, 0i64, 10u64]]
92 }
93
94 String@UInt64[n:out]
95 {
96 out <- String[__String Int[n, Array[], 10u64]]
82 } 97 }
83 98
84 String@Int32[n:out] 99 String@Int32[n:out]
85 { 100 {
86 out <- String[_String Int32[n]] 101 out <- String[_String Int[n, 0i32, 10u32]]
102 }
103
104 String@UInt32[n:out]
105 {
106 out <- String[__String Int[n, Array[], 10u32]]
107 }
108
109 String@Int16[n:out]
110 {
111 out <- String[_String Int[n, 0i16, 10u16]]
112 }
113
114 String@UInt16[n:out]
115 {
116 out <- String[__String Int[n, Array[], 10u16]]
117 }
118
119 String@Int8[n:out]
120 {
121 out <- String[_String Int[n, 0i8, 10u8]]
122 }
123
124 String@UInt8[n:out]
125 {
126 out <- String[__String Int[n, Array[], 10u8]]
87 } 127 }
88 128
89 Print@Int32[n:out] 129 Print@Int32[n:out]
90 { 130 {
91 fbuf <- [_String Int32[n]]Append[10u8] 131 fbuf <- [_String Int[n, 0i32, 10u32]]Append[10u8]
92 out <- write[1i32, fbuf, Int64[[fbuf]Length >>]] 132 out <- write[1i32, fbuf, Int64[[fbuf]Length >>]]
93 } 133 }
94 134
95 String@UInt32[n:out]
96 {
97 out <- String[_String 32[n, Array[]]]
98 }
99
100 Print@UInt32[n:out] 135 Print@UInt32[n:out]
101 { 136 {
102 fbuf <- [_String 32[n, Array[]]]Append[10u8] 137 fbuf <- [__String Int[n, Array[], 10u32]]Append[10u8]
103 out <- write[1i32, fbuf, Int64[[fbuf]Length >>]] 138 out <- write[1i32, fbuf, Int64[[fbuf]Length >>]]
104 } 139 }
105 140
106 Blueprint Int16 141 Blueprint Int16
107 { 142 {