commit 89e4166520e985e81974adb138f4dd3013e44cbd Author: Denis Drakhnya Date: Wed Nov 25 17:18:59 2020 +0200 Initial commit. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..567609b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build/ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5cab5ef --- /dev/null +++ b/Makefile @@ -0,0 +1,50 @@ +PORT := 1234 +CHECK := diff -q +MKDIR_P := mkdir -p + +CC := lcc +CFLAGS := -nostdlib + +QEMU := qemu-e2k +QEMU_ARGS := + +GDB := e2k-linux-gdb +GDB_ARGS := -q --batch --nx --nw -ix gdbinit +GDB_BPS := -ex 'b _start' -ex 'b _stop' + +ifndef EMU + GDB_SERVER := gdbserver + GDB_SERVER_ARGS := :$(PORT) +else + GDB_SERVER := $(QEMU) + GDB_SERVER_ARGS := -g $(PORT) $(QEMU_ARGS) +endif + +tests := $(subst .s,,$(notdir $(wildcard src/*.s))) +executables := $(addprefix build/,$(tests)) +logs := $(addprefix build/,$(addsuffix .log,$(tests))) +checks := $(addprefix check-,$(tests)) + +.PHONY: all test mkdirs clean $(checks) + +all: mkdirs $(logs) + +test: mkdirs $(checks) + +mkdirs: + $(MKDIR_P) build + +clean: + $(RM) $(executables) + $(RM) $(logs) + +$(executables): build/%: src/%.s + $(CC) $(CFLAGS) -o $@ $< + +$(logs): build/%.log: build/% src/%.gdb + $(GDB_SERVER) $(GDB_SERVER_ARGS) $< & + $(GDB) $(GDB_ARGS) -ex 'file $<' $(GDB_BPS) \ + -ex 'target remote :$(PORT)' -x src/$*.gdb > $@ + +$(checks): check-%: build/%.log src/%.log + $(CHECK) $^ diff --git a/gdbinit b/gdbinit new file mode 100644 index 0000000..008867f --- /dev/null +++ b/gdbinit @@ -0,0 +1,2 @@ +set pagination off +set confirm off diff --git a/src/addd.gdb b/src/addd.gdb new file mode 100644 index 0000000..fbde99c --- /dev/null +++ b/src/addd.gdb @@ -0,0 +1,2 @@ +c +info registers r0 diff --git a/src/addd.log b/src/addd.log new file mode 100644 index 0000000..4d319d1 --- /dev/null +++ b/src/addd.log @@ -0,0 +1,6 @@ +Breakpoint 1 at 0x10078 +Breakpoint 2 at 0x10080 +0x0000000000010078 in _start () + +Breakpoint 2, 0x0000000000010080 in _stop () +r0 <00> 0x4 4 diff --git a/src/addd.s b/src/addd.s new file mode 100644 index 0000000..a92ba6c --- /dev/null +++ b/src/addd.s @@ -0,0 +1,7 @@ +.global _start +.global _stop + +_start: + addd 2, 2, %r0 +_stop: + udivs 0, 0, %empty diff --git a/src/subd.gdb b/src/subd.gdb new file mode 100644 index 0000000..fbde99c --- /dev/null +++ b/src/subd.gdb @@ -0,0 +1,2 @@ +c +info registers r0 diff --git a/src/subd.log b/src/subd.log new file mode 100644 index 0000000..ef7e141 --- /dev/null +++ b/src/subd.log @@ -0,0 +1,6 @@ +Breakpoint 1 at 0x10078 +Breakpoint 2 at 0x10080 +0x0000000000010078 in _start () + +Breakpoint 2, 0x0000000000010080 in _stop () +r0 <00> 0x0 0 diff --git a/src/subd.s b/src/subd.s new file mode 100644 index 0000000..2dcbc5e --- /dev/null +++ b/src/subd.s @@ -0,0 +1,7 @@ +.global _start +.global _stop + +_start: + subd 2, 2, %r0 +_stop: + udivs 0, 0, %empty