load library.scm before contribs

This commit is contained in:
Yuichi Nishiwaki
2017-04-15 16:24:25 +09:00
parent 69ab7e4970
commit 1adcd26d85
24 changed files with 202 additions and 222 deletions
+5 -10
View File
@@ -39,20 +39,15 @@ LIBPICRIN_HEADERS = \
CFLAGS += -I./include -Wall -Wextra -g
mini-picrin: $(LIBPICRIN_OBJS) ext/main.o
$(CC) $(CFLAGS) -o $@ ext/main.o $(LIBPICRIN_OBJS)
mini-picrin: ext/main.o libpicrin.a
$(CC) $(CFLAGS) -o $@ ext/main.o libpicrin.a
libpicrin.so: CFLAGS += -fPIC
libpicrin.so: $(LIBPICRIN_OBJS)
$(CC) $(CFLAGS) -shared -o $@ $(LIBPICRIN_OBJS) $(LDFLAGS)
libpicrin.so.minimal: $(LIBPICRIN_SRCS)
$(CC) -I./include -Os -DPIC_USE_LIBC=0 -DPIC_USE_CALLCC=0 -DPIC_USE_FILE=0 -DPIC_USE_READ=0 -DPIC_USE_WRITE=0 -DPIC_USE_EVAL=0 -nostdlib -ffreestanding -fno-stack-protector -shared -o $@ $(LIBPICRIN_SRCS) $(LDFLAGS)
strip $@
libpicrin.a: $(LIBPICRIN_OBJS)
$(AR) $(ARFLAGS) $@ $(LIBPICRIN_OBJS)
$(LIBPICRIN_OBJS): $(LIBPICRIN_HEADERS)
clean:
$(RM) $(LIBPICRIN_OBJS) ext/main.o mini-picrin libpicrin.so libpicrin.so.minimal
$(RM) $(LIBPICRIN_OBJS) ext/main.o mini-picrin libpicrin.a
.PHONY: clean
+1 -1
View File
@@ -41,7 +41,7 @@ cont_call(pic_state *pic)
}
pic->cxt = cxt;
PIC_LONGJMP(cxt->jmp, 1);
longjmp(cxt->jmp, 1);
PIC_UNREACHABLE();
}
+1 -2
View File
@@ -42,10 +42,9 @@
# include <setjmp.h>
# define PIC_JMPBUF jmp_buf
# define PIC_SETJMP(buf) setjmp(buf)
# define PIC_LONGJMP(buf, val) longjmp((buf), (val))
#else
# define PIC_JMPBUF char
# define PIC_SETJMP(buf) 0
# define PIC_SETJMP(buf) ((void)(buf), 0)
#endif
#ifndef PIC_ABORT
+2 -1
View File
@@ -56,9 +56,10 @@ assemble(pic_state *pic, pic_value as)
i = 0;
/* TODO: validate operands */
pic_for_each (r, codes, it) {
pic_value op;
if (! pic_pair_p(pic, r))
continue;
pic_value op = pic_car(pic, r);
op = pic_car(pic, r);
if (pic_eq_p(pic, op, pic_intern_lit(pic, "HALT"))) {
code[i++] = OP_HALT;
}
+1 -1
View File
@@ -92,7 +92,7 @@ enum {
OP_LOADF = 0x0A, /* 0x0A 0x** OP_LOADF dest */
OP_LOADN = 0x0B, /* 0x0B 0x** OP_LOADN dest */
OP_LOADU = 0x0C, /* 0x0C 0x** OP_LOADU dest */
OP_LOADI = 0x0D, /* 0x0D 0x** 0x** OP_LOADI dest i */
OP_LOADI = 0x0D /* 0x0D 0x** 0x** OP_LOADI dest i */
};
typedef unsigned char code_t;