load library.scm before contribs
This commit is contained in:
+5
-10
@@ -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
@@ -41,7 +41,7 @@ cont_call(pic_state *pic)
|
||||
}
|
||||
pic->cxt = cxt;
|
||||
|
||||
PIC_LONGJMP(cxt->jmp, 1);
|
||||
longjmp(cxt->jmp, 1);
|
||||
PIC_UNREACHABLE();
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user