* adding some asm tests in asm-tests.ss
This commit is contained in:
parent
a123a77bbc
commit
297e47db32
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
CFLAGS = -I/opt/local/include -Wall -DNDEBUG -O3 #-fomit-frame-pointer
|
#CFLAGS = -I/opt/local/include -Wall -DNDEBUG -O3 #-fomit-frame-pointer
|
||||||
#CFLAGS = -I/opt/local/include -Wall -g
|
CFLAGS = -I/opt/local/include -Wall -g
|
||||||
LDFLAGS = -L/opt/local/lib -g -ldl -lgmp #-rdynamic
|
LDFLAGS = -L/opt/local/lib -g -ldl -lgmp #-rdynamic
|
||||||
CC = gcc
|
CC = gcc
|
||||||
all: ikarus
|
all: ikarus
|
||||||
|
|
|
||||||
BIN
bin/ikarus
BIN
bin/ikarus
Binary file not shown.
|
|
@ -0,0 +1,57 @@
|
||||||
|
|
||||||
|
(define (asm-test res ls)
|
||||||
|
(printf "Testing:\n")
|
||||||
|
(for-each (lambda (x)
|
||||||
|
(printf " ~s\n" x))
|
||||||
|
ls)
|
||||||
|
(let ([code
|
||||||
|
(car (#%list*->code*
|
||||||
|
(lambda (x) #f)
|
||||||
|
`([0 (label ,(gensym)) . ,ls])))])
|
||||||
|
(let ([proc (#%$code->closure code)])
|
||||||
|
(let ([v (proc)])
|
||||||
|
(unless (equal? v res)
|
||||||
|
(printf "failed!\n")
|
||||||
|
(error 'test-asm "expected ~s, got ~s" res v)))))
|
||||||
|
(printf "OK\n\n"))
|
||||||
|
|
||||||
|
(asm-test 12
|
||||||
|
'([movl 48 %eax]
|
||||||
|
[ret]))
|
||||||
|
|
||||||
|
(asm-test 12
|
||||||
|
'([movl 16 %eax]
|
||||||
|
[orl 32 %eax]
|
||||||
|
[ret]))
|
||||||
|
|
||||||
|
(asm-test 12
|
||||||
|
'([movl 48 %eax]
|
||||||
|
[movl %eax (disp -4 %esp)]
|
||||||
|
[movl 0 %eax]
|
||||||
|
[movl (disp -4 %esp) %eax]
|
||||||
|
[ret]))
|
||||||
|
|
||||||
|
|||||||