NASMFLAGS = -f elf
+CINCLUDE=
+CWARNS=-Wall -Wpointer-arith -Wnested-externs
+CFLAGS=$(CINCLUDE) $(CWARNS) -O2
+LDFLAGS=
-all: libmalice.o
+SRCDIR=src
+BINDIR=build
+
+all: libmalice.o demo-printing
libmalice.o: libmalice.asm
nasm $(NASMFLAGS) -o $@ $<
+.c.o:
+ cc $(CFLAGS) -c -o $@ $<
+
+demo-printing: demo-printing.o libmalice.o
+ ld $(LDFLAGS) -nostdlib -e _lmStart -o demo-printing demo-printing.o libmalice.o
+
+demos: demo-printing
+
.PHONY : clean
clean:
rm -f *.o
-
-.PHONY : distclean
-distclean: clean
- rm -f *~
-
-.PHONY : test
-test: all
+ rm -f demo-printing
--- /dev/null
+#include "libmalice.h"
+
+int lmMain(void)
+{
+ lmPrintString("Goodbye cruel world, I had too much ");
+ lmPrintInt32s(-559038737);
+ lmPrintChar('.');
+ lmPrintChar('\n');
+ lmPrintString("Oh my, I'm still here... ok, I'll exit now.\n");
+
+ return 42;
+}
\ No newline at end of file
--- /dev/null
+#ifndef _LIBMALICE_H_
+#define _LIBMALICE_H_
+
+void _lmStart(void);
+int lmMain(void);
+
+void lmExit(int exitstatus);
+
+void lmPrintChar(int chr);
+void lmPrintString(char *string);
+void lmPrintInt32s(int num);
+
+int lmReadChar(void);
+int lmReadInt32s(void);
+
+#endif