wasm-lang/test/itoa

43 lines
753 B
Text
Raw Normal View History

2023-10-04 07:09:35 +00:00
fn itoa(number: i32) -> i32 {
let count: i32 = 0;
let is_negative = number < 0;
if is_negative {
number = -number;
}
loop {
let ch = (number % 10) + 0x30;
store_i32_8(count + 8, ch);
number = number / 10;
count = count + 1;
if number == 0 {
break;
}
}
if is_negative {
store_i32_8(count + 8, 45);
count = count + 1;
}
let i: i32 = 0;
loop {
let swap_to = count - i + 7;
let swap_from = i + 8;
let tmp = load_i32_8(swap_to);
store_i32_8(swap_to, load_i32_8(swap_from));
store_i32_8(swap_from, tmp);
i = i + 1;
if i >= count / 2 {
break;
}
}
count
}