forked from AbleOS/ableos
Compare commits
No commits in common. "f023773b2e83168e65213f4d2cd17b4f838d3430" and "b7d668c83a015476e6d23adc3198b16399952551" have entirely different histories.
f023773b2e
...
b7d668c83a
|
@ -4,57 +4,32 @@ length := fn(ptr: ^u8): uint {
|
||||||
return len
|
return len
|
||||||
}
|
}
|
||||||
|
|
||||||
display_int := fn(num: int, p: ^u8, radix: int): ^u8 {
|
// WTFFF is wrong with display_int
|
||||||
|
display_int := fn(num: int, p: ^u8): ^u8 {
|
||||||
ptr := p
|
ptr := p
|
||||||
negative := num < 0
|
negative := num < 0
|
||||||
if negative {
|
if negative {
|
||||||
num = -num
|
num = -num
|
||||||
}
|
}
|
||||||
|
|
||||||
if radix == 2 {
|
|
||||||
*ptr = 48
|
|
||||||
ptr += 1;
|
|
||||||
*ptr = 98
|
|
||||||
ptr += 1
|
|
||||||
} else if radix == 16 {
|
|
||||||
*ptr = 48
|
|
||||||
ptr += 1;
|
|
||||||
*ptr = 120
|
|
||||||
ptr += 1
|
|
||||||
} else if radix == 8 {
|
|
||||||
*ptr = 48
|
|
||||||
ptr += 1;
|
|
||||||
*ptr = 111
|
|
||||||
ptr += 1
|
|
||||||
}
|
|
||||||
digits_start := ptr
|
|
||||||
if num == 0 {
|
if num == 0 {
|
||||||
*ptr = 48
|
*ptr = 48
|
||||||
ptr += 1
|
ptr += 1
|
||||||
} else {
|
} else {
|
||||||
loop if num == 0 break else {
|
loop if num == 0 break else {
|
||||||
digit := num % radix
|
*ptr = num % 10 + 48
|
||||||
if digit < 10 {
|
|
||||||
*ptr = digit + 48
|
|
||||||
} else {
|
|
||||||
*ptr = digit + 55
|
|
||||||
}
|
|
||||||
ptr += 1
|
ptr += 1
|
||||||
num /= radix
|
num /= 10
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if negative {
|
if negative {
|
||||||
*ptr = 45
|
*ptr = 45
|
||||||
ptr += 1
|
ptr += 1
|
||||||
};
|
};
|
||||||
|
|
||||||
*ptr = 0
|
*ptr = 0
|
||||||
|
@inline(reverse, p)
|
||||||
@inline(reverse, digits_start)
|
|
||||||
|
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
reverse := fn(s: ^u8): void {
|
reverse := fn(s: ^u8): void {
|
||||||
len := @inline(length, s)
|
len := @inline(length, s)
|
||||||
i := 0
|
i := 0
|
||||||
|
|
|
@ -23,7 +23,7 @@ main := fn(): int {
|
||||||
buf := "\0\0\0\0"
|
buf := "\0\0\0\0"
|
||||||
x := 0
|
x := 0
|
||||||
loop if x == 255 break else {
|
loop if x == 255 break else {
|
||||||
log.info(string.display_int(x, buf, 10))
|
log.info(string.display_int(x, buf))
|
||||||
x += 1
|
x += 1
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
|
|
Loading…
Reference in a new issue