Files
lang/data/test.lang

131 lines
1.9 KiB
Plaintext

struct Test {
a: 64,
b: 64,
}
fn start() {
println("Helld!");
println("Hello World!!!!!");
thinger();
let x = 3;
if not(not(lt(x, 5))) {
println("tada!");
};
println("before:");
x = 0;
loop {
if not(lt(x, 5)) {
break;
};
println("RAAAAA");
x = add(x, 1);
};
println("after");
print(tester());
let test = Test {
a: 10,
b: 9,
};
arger("a", "b", "c");
let z = sub(test.a, 10);
exit(add(mul(sub(add(5, test.b), 1), 3), z));
}
fn structer(test: Test) {
}
fn thinger() {
print("estamos jugando\n");
}
fn unused() {
print("el unused\n");
}
fn println(msg: slice<8>) {
print(msg);
print("\n");
}
fn print(msg: slice<8>) {
asm (a1 = msg) {
ld a2, 8, a1
ld a1, 0, a1
li a0, 1
li a7, 64
ecall
}
}
fn add(a: 64, b: 64) -> 64 {
let c: 64 = 0;
asm (t0 = a, t1 = b, a0 = c) {
ld t0, 0, t0
ld t1, 0, t1
add t0, t0, t1
sd t0, 0, a0
};
c
}
fn mul(a: 64, b: 64) -> 64 {
let c: 64 = 0;
asm (t0 = a, t1 = b, a0 = c) {
ld t0, 0, t0
ld t1, 0, t1
mul t0, t0, t1
sd t0, 0, a0
};
c
}
fn sub(a: 64, b: 64) -> 64 {
let c: 64 = 0;
asm (t0 = a, t1 = b, a0 = c) {
ld t0, 0, t0
ld t1, 0, t1
sub t0, t0, t1
sd t0, 0, a0
};
c
}
fn lt(a: 64, b: 64) -> 64 {
let c: 64 = 0;
asm (t0 = a, t1 = b, a0 = c) {
ld t0, 0, t0
ld t1, 0, t1
slt t0, t0, t1
sd t0, 0, a0
};
c
}
fn not(a: 64) -> 64 {
let c: 64 = 0;
asm (t0 = a, a0 = c) {
ld t0, 0, t0
xori t0, t0, 1
sd t0, 0, a0
};
c
}
fn arger(a: slice<8>, b: slice<8>, c: slice<8>) {
print(a);
print(b);
println(c);
}
fn exit(status: 64) {
asm (a0 = status) {
ld a0, 0, a0
li a7, 93
ecall
};
}
fn tester() -> slice<8> {
"hola\n"
}