test runner
This commit is contained in:
@@ -114,39 +114,9 @@ extern fread
|
|||||||
extern rewind
|
extern rewind
|
||||||
extern system
|
extern system
|
||||||
extern exit
|
extern exit
|
||||||
|
extern gettimeofday
|
||||||
copystr equ strdup
|
copystr equ strdup
|
||||||
|
|
||||||
isqrt:
|
|
||||||
xor rax, rax
|
|
||||||
mov rcx, 1
|
|
||||||
mov rbx, rdi
|
|
||||||
shl rcx, 62
|
|
||||||
.isqrt.1:
|
|
||||||
cmp rcx, 0
|
|
||||||
je .isqrt.5
|
|
||||||
cmp rcx, rbx
|
|
||||||
jbe .isqrt.2
|
|
||||||
shr rcx, 2
|
|
||||||
jmp .isqrt.1
|
|
||||||
.isqrt.2:
|
|
||||||
cmp rcx, 0
|
|
||||||
je .isqrt.5
|
|
||||||
mov rdx, rax
|
|
||||||
add rdx, rcx
|
|
||||||
cmp rbx, rdx
|
|
||||||
jb .isqrt.3
|
|
||||||
sub rbx, rdx
|
|
||||||
shr rax, 1
|
|
||||||
add rax, rcx
|
|
||||||
jmp .isqrt.4
|
|
||||||
.isqrt.3:
|
|
||||||
shr rax, 1
|
|
||||||
.isqrt.4:
|
|
||||||
shr rcx, 2
|
|
||||||
jmp .isqrt.2
|
|
||||||
.isqrt.5:
|
|
||||||
ret
|
|
||||||
|
|
||||||
nth:
|
nth:
|
||||||
movzx rax, byte [rdi + rsi]
|
movzx rax, byte [rdi + rsi]
|
||||||
ret
|
ret
|
||||||
@@ -154,6 +124,54 @@ nth:
|
|||||||
set:
|
set:
|
||||||
mov [rdi + rsi], dl
|
mov [rdi + rsi], dl
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
time:
|
||||||
|
push rbx
|
||||||
|
sub rsp, 16
|
||||||
|
mov rbx, rsp
|
||||||
|
mov rdi, rbx
|
||||||
|
xor esi, esi
|
||||||
|
call gettimeofday
|
||||||
|
imul rcx, qword [rbx], 1000
|
||||||
|
mov rax, qword [rbx+8]
|
||||||
|
mov esi, 1000
|
||||||
|
cqo
|
||||||
|
idiv rsi
|
||||||
|
add rax, rcx
|
||||||
|
add rsp, 16
|
||||||
|
pop rbx
|
||||||
|
ret
|
||||||
|
|
||||||
|
isqrt:
|
||||||
|
xor rax, rax
|
||||||
|
mov rcx, 1
|
||||||
|
mov rbx, rdi
|
||||||
|
shl rcx, 62
|
||||||
|
.isqrt.1:
|
||||||
|
cmp rcx, 0
|
||||||
|
je .isqrt.5
|
||||||
|
cmp rcx, rbx
|
||||||
|
jbe .isqrt.2
|
||||||
|
shr rcx, 2
|
||||||
|
jmp .isqrt.1
|
||||||
|
.isqrt.2:
|
||||||
|
cmp rcx, 0
|
||||||
|
je .isqrt.5
|
||||||
|
mov rdx, rax
|
||||||
|
add rdx, rcx
|
||||||
|
cmp rbx, rdx
|
||||||
|
jb .isqrt.3
|
||||||
|
sub rbx, rdx
|
||||||
|
shr rax, 1
|
||||||
|
add rax, rcx
|
||||||
|
jmp .isqrt.4
|
||||||
|
.isqrt.3:
|
||||||
|
shr rax, 1
|
||||||
|
.isqrt.4:
|
||||||
|
shr rcx, 2
|
||||||
|
jmp .isqrt.2
|
||||||
|
.isqrt.5:
|
||||||
|
ret
|
||||||
",
|
",
|
||||||
);
|
);
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
21
test.py
21
test.py
@@ -1,21 +0,0 @@
|
|||||||
import os
|
|
||||||
import sys
|
|
||||||
import time
|
|
||||||
|
|
||||||
os.system("cargo build --release")
|
|
||||||
|
|
||||||
for x in os.listdir("examples/"):
|
|
||||||
print(
|
|
||||||
"\033[93mBuilding %s...\033[0m" % x,
|
|
||||||
end="",
|
|
||||||
flush=True,
|
|
||||||
)
|
|
||||||
t = time.time()
|
|
||||||
if os.system("./target/release/zern examples/" + x) != 0:
|
|
||||||
sys.exit(1)
|
|
||||||
print(" %sms" % round((time.time() - t) * 1000, 2))
|
|
||||||
|
|
||||||
t = time.time()
|
|
||||||
if os.system("./out") != 0:
|
|
||||||
sys.exit(1)
|
|
||||||
print("\033[93mRunning %s...\033[0m %sms" % (x, round((time.time() - t) * 1000, 2)))
|
|
||||||
40
test.zr
Normal file
40
test.zr
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
func run_test[x: String] : I64
|
||||||
|
printf("[93mBuilding %s...[0m", x)
|
||||||
|
let cmd: String = concat("./target/release/zern examples/", x)
|
||||||
|
|
||||||
|
let build_start_time: I64 = time()
|
||||||
|
if system(cmd) != 0
|
||||||
|
exit(1)
|
||||||
|
let build_end_time: I64 = time()
|
||||||
|
|
||||||
|
free(cmd)
|
||||||
|
printf(" %ldms\n", build_end_time - build_start_time)
|
||||||
|
|
||||||
|
let run_start_time: I64 = time()
|
||||||
|
if system("./out") != 0
|
||||||
|
exit(1)
|
||||||
|
let run_end_time: I64 = time()
|
||||||
|
|
||||||
|
printf("[93mRunning %s...[0m %ldms\n", x, run_end_time - run_start_time)
|
||||||
|
|
||||||
|
func main[] : I64
|
||||||
|
system("cargo build --release")
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
run_test("euler1.zr")
|
||||||
|
run_test("euler2.zr")
|
||||||
|
run_test("euler3.zr")
|
||||||
|
run_test("euler4.zr")
|
||||||
|
run_test("euler5.zr")
|
||||||
|
run_test("euler6.zr")
|
||||||
|
run_test("euler7.zr")
|
||||||
|
run_test("euler8.zr")
|
||||||
|
run_test("euler9.zr")
|
||||||
|
run_test("euler10.zr")
|
||||||
|
run_test("euler12.zr")
|
||||||
|
run_test("euler13.zr")
|
||||||
|
run_test("euler14.zr")
|
||||||
|
run_test("euler15.zr")
|
||||||
|
run_test("fib.zr")
|
||||||
|
run_test("hello.zr")
|
||||||
|
run_test("strings.zr")
|
||||||
Reference in New Issue
Block a user