diff --git a/nemu/.gitignore b/nemu/.gitignore index f546b14f229efa851f08f4cb7c1e6caf012f908a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/nemu/.gitignore +++ b/nemu/.gitignore @@ -1,8 +0,0 @@ -*.* -* -!*/ -!Makefile* -!*.[cSh] -!.gitignore -!README.md -!runall.sh diff --git a/nemu/Makefile b/nemu/Makefile index d3966224242c2cc0aa6c442dd12aa1a2f1fc9bff..45175226dcbbaac3b4305275bba3696f66ad74d3 100644 --- a/nemu/Makefile +++ b/nemu/Makefile @@ -16,21 +16,21 @@ include Makefile.git .DEFAULT_GOAL = app # Compilation flags -CC ?= gcc -LD = $(CC) +CXX ?= g++ +LD = $(CXX) INCLUDES = $(addprefix -I, $(INC_DIR)) CFLAGS += -O2 -MMD -Wall -ggdb3 $(INCLUDES) -fomit-frame-pointer CFLAGS += -DDIFF_TEST_QEMU # Files to be compiled -SRCS = $(shell find src/ -name "*.c") -OBJS = $(SRCS:src/%.c=$(OBJ_DIR)/%.o) +SRCS = $(shell find src/ -name "*.cc") +OBJS = $(SRCS:src/%.cc=$(OBJ_DIR)/%.o) # Compilation patterns -$(OBJ_DIR)/%.o: src/%.c - @echo + CC $< +$(OBJ_DIR)/%.o: src/%.cc + @echo + CXX $< @mkdir -p $(dir $@) - $(CC) $(CFLAGS) $(SO_CFLAGS) -c -o $@ $< + $(CXX) $(CFLAGS) $(SO_CFLAGS) -c -o $@ $< # Depencies @@ -50,7 +50,7 @@ NEMU_EXEC := $(BINARY) $(ARGS) $(BINARY): $(OBJS) $(call git_commit, "compile") @echo + LD $@ - @$(LD) -O2 -rdynamic $(SO_LDLAGS) -o $@ $^ -lSDL2 -lreadline -ldl + @$(LD) -O2 -rdynamic $(SO_LDLAGS) -o $@ $^ -lSDL2 -lreadline -ldl -lr run: $(BINARY) $(call git_commit, "run") diff --git a/nemu/build/nemu b/nemu/build/nemu new file mode 100755 index 0000000000000000000000000000000000000000..37908f82cd2df4e1e5480c62db05d0ff17a548b2 Binary files /dev/null and b/nemu/build/nemu differ diff --git a/nemu/build/obj/cpu/decode/decode.d b/nemu/build/obj/cpu/decode/decode.d new file mode 100644 index 0000000000000000000000000000000000000000..cf8d409082f6533d4b581572636ec121959673d3 --- /dev/null +++ b/nemu/build/obj/cpu/decode/decode.d @@ -0,0 +1,6 @@ +build/obj/cpu/decode/decode.o: src/cpu/decode/decode.cc \ + include/cpu/exec.h include/nemu.h include/common.h include/debug.h \ + include/macro.h include/memory/memory.h include/common.h \ + include/cpu/reg.h include/cpu/decode.h include/cpu/rtl.h \ + include/util/c_op.h include/cpu/relop.h include/cpu/rtl-wrapper.h \ + include/macro.h include/cpu/rtl.h diff --git a/nemu/build/obj/cpu/decode/decode.o b/nemu/build/obj/cpu/decode/decode.o new file mode 100644 index 0000000000000000000000000000000000000000..8a3a8076f7b89e51427e8d8ec17677c7878ee553 Binary files /dev/null and b/nemu/build/obj/cpu/decode/decode.o differ diff --git a/nemu/build/obj/cpu/decode/modrm.d b/nemu/build/obj/cpu/decode/modrm.d new file mode 100644 index 0000000000000000000000000000000000000000..2eede537408e208209ac257f54417874d70e7dd6 --- /dev/null +++ b/nemu/build/obj/cpu/decode/modrm.d @@ -0,0 +1,6 @@ +build/obj/cpu/decode/modrm.o: src/cpu/decode/modrm.cc include/cpu/exec.h \ + include/nemu.h include/common.h include/debug.h include/macro.h \ + include/memory/memory.h include/common.h include/cpu/reg.h \ + include/cpu/decode.h include/cpu/rtl.h include/util/c_op.h \ + include/cpu/relop.h include/cpu/rtl-wrapper.h include/macro.h \ + include/cpu/rtl.h diff --git a/nemu/build/obj/cpu/decode/modrm.o b/nemu/build/obj/cpu/decode/modrm.o new file mode 100644 index 0000000000000000000000000000000000000000..545ac9c7865d151205e2c37dac03d2ca042d90ae Binary files /dev/null and b/nemu/build/obj/cpu/decode/modrm.o differ diff --git a/nemu/build/obj/cpu/exec/arith.d b/nemu/build/obj/cpu/exec/arith.d new file mode 100644 index 0000000000000000000000000000000000000000..5d5bd996b8735f6c90a404d191c1d5ec4ad6c0cd --- /dev/null +++ b/nemu/build/obj/cpu/exec/arith.d @@ -0,0 +1,5 @@ +build/obj/cpu/exec/arith.o: src/cpu/exec/arith.cc include/cpu/exec.h \ + include/nemu.h include/common.h include/debug.h include/macro.h \ + include/memory/memory.h include/common.h include/cpu/reg.h \ + include/cpu/decode.h include/cpu/rtl.h include/util/c_op.h \ + include/cpu/relop.h include/cpu/rtl-wrapper.h include/macro.h diff --git a/nemu/build/obj/cpu/exec/arith.o b/nemu/build/obj/cpu/exec/arith.o new file mode 100644 index 0000000000000000000000000000000000000000..891ee60932f07ae891b560beea6835d20e9481a4 Binary files /dev/null and b/nemu/build/obj/cpu/exec/arith.o differ diff --git a/nemu/build/obj/cpu/exec/cc.d b/nemu/build/obj/cpu/exec/cc.d new file mode 100644 index 0000000000000000000000000000000000000000..ce59a1f6ea889a97301e37ecad64e8ff729908ed --- /dev/null +++ b/nemu/build/obj/cpu/exec/cc.d @@ -0,0 +1,5 @@ +build/obj/cpu/exec/cc.o: src/cpu/exec/cc.cc include/cpu/rtl.h \ + include/nemu.h include/common.h include/debug.h include/macro.h \ + include/memory/memory.h include/common.h include/cpu/reg.h \ + include/util/c_op.h include/cpu/relop.h include/cpu/rtl-wrapper.h \ + include/macro.h diff --git a/nemu/build/obj/cpu/exec/cc.o b/nemu/build/obj/cpu/exec/cc.o new file mode 100644 index 0000000000000000000000000000000000000000..0e6b98423c30294d242af59b202d3d08de9892eb Binary files /dev/null and b/nemu/build/obj/cpu/exec/cc.o differ diff --git a/nemu/build/obj/cpu/exec/control.d b/nemu/build/obj/cpu/exec/control.d new file mode 100644 index 0000000000000000000000000000000000000000..e06b8662ea9c28bf05b9d81382261efc4677aa51 --- /dev/null +++ b/nemu/build/obj/cpu/exec/control.d @@ -0,0 +1,6 @@ +build/obj/cpu/exec/control.o: src/cpu/exec/control.cc include/cpu/exec.h \ + include/nemu.h include/common.h include/debug.h include/macro.h \ + include/memory/memory.h include/common.h include/cpu/reg.h \ + include/cpu/decode.h include/cpu/rtl.h include/util/c_op.h \ + include/cpu/relop.h include/cpu/rtl-wrapper.h include/macro.h \ + include/cpu/cc.h diff --git a/nemu/build/obj/cpu/exec/control.o b/nemu/build/obj/cpu/exec/control.o new file mode 100644 index 0000000000000000000000000000000000000000..31090c00c8a6f7b95a2f6586fac74b595280a1d4 Binary files /dev/null and b/nemu/build/obj/cpu/exec/control.o differ diff --git a/nemu/build/obj/cpu/exec/data-mov.d b/nemu/build/obj/cpu/exec/data-mov.d new file mode 100644 index 0000000000000000000000000000000000000000..b77dae33f20ed5fabb7bf219d4e2da3bd2ffcac9 --- /dev/null +++ b/nemu/build/obj/cpu/exec/data-mov.d @@ -0,0 +1,6 @@ +build/obj/cpu/exec/data-mov.o: src/cpu/exec/data-mov.cc \ + include/cpu/exec.h include/nemu.h include/common.h include/debug.h \ + include/macro.h include/memory/memory.h include/common.h \ + include/cpu/reg.h include/cpu/decode.h include/cpu/rtl.h \ + include/util/c_op.h include/cpu/relop.h include/cpu/rtl-wrapper.h \ + include/macro.h diff --git a/nemu/build/obj/cpu/exec/data-mov.o b/nemu/build/obj/cpu/exec/data-mov.o new file mode 100644 index 0000000000000000000000000000000000000000..ccc01b64056b8abfc2c1df028d171ea9a62e6ab0 Binary files /dev/null and b/nemu/build/obj/cpu/exec/data-mov.o differ diff --git a/nemu/build/obj/cpu/exec/exec.d b/nemu/build/obj/cpu/exec/exec.d new file mode 100644 index 0000000000000000000000000000000000000000..08b57abe0579c584f09f8082c1553600b2fcbc94 --- /dev/null +++ b/nemu/build/obj/cpu/exec/exec.d @@ -0,0 +1,6 @@ +build/obj/cpu/exec/exec.o: src/cpu/exec/exec.cc include/cpu/exec.h \ + include/nemu.h include/common.h include/debug.h include/macro.h \ + include/memory/memory.h include/common.h include/cpu/reg.h \ + include/cpu/decode.h include/cpu/rtl.h include/util/c_op.h \ + include/cpu/relop.h include/cpu/rtl-wrapper.h include/macro.h \ + src/cpu/exec/all-instr.h diff --git a/nemu/build/obj/cpu/exec/exec.o b/nemu/build/obj/cpu/exec/exec.o new file mode 100644 index 0000000000000000000000000000000000000000..16baabb8232196210718092eab9b1511ab73871a Binary files /dev/null and b/nemu/build/obj/cpu/exec/exec.o differ diff --git a/nemu/build/obj/cpu/exec/logic.d b/nemu/build/obj/cpu/exec/logic.d new file mode 100644 index 0000000000000000000000000000000000000000..eff0f17b87aa7c92c970b7df1bf0340f74230473 --- /dev/null +++ b/nemu/build/obj/cpu/exec/logic.d @@ -0,0 +1,6 @@ +build/obj/cpu/exec/logic.o: src/cpu/exec/logic.cc include/cpu/exec.h \ + include/nemu.h include/common.h include/debug.h include/macro.h \ + include/memory/memory.h include/common.h include/cpu/reg.h \ + include/cpu/decode.h include/cpu/rtl.h include/util/c_op.h \ + include/cpu/relop.h include/cpu/rtl-wrapper.h include/macro.h \ + include/cpu/cc.h diff --git a/nemu/build/obj/cpu/exec/logic.o b/nemu/build/obj/cpu/exec/logic.o new file mode 100644 index 0000000000000000000000000000000000000000..0044ef60bda5c0881109fcf617e2c6261ed365db Binary files /dev/null and b/nemu/build/obj/cpu/exec/logic.o differ diff --git a/nemu/build/obj/cpu/exec/prefix.d b/nemu/build/obj/cpu/exec/prefix.d new file mode 100644 index 0000000000000000000000000000000000000000..e23050add5313587c48a4fe3fe0dc6b547cb980b --- /dev/null +++ b/nemu/build/obj/cpu/exec/prefix.d @@ -0,0 +1,5 @@ +build/obj/cpu/exec/prefix.o: src/cpu/exec/prefix.cc include/cpu/exec.h \ + include/nemu.h include/common.h include/debug.h include/macro.h \ + include/memory/memory.h include/common.h include/cpu/reg.h \ + include/cpu/decode.h include/cpu/rtl.h include/util/c_op.h \ + include/cpu/relop.h include/cpu/rtl-wrapper.h include/macro.h diff --git a/nemu/build/obj/cpu/exec/prefix.o b/nemu/build/obj/cpu/exec/prefix.o new file mode 100644 index 0000000000000000000000000000000000000000..e40de0e0eaa436acfad1ca45ba95af4329720b05 Binary files /dev/null and b/nemu/build/obj/cpu/exec/prefix.o differ diff --git a/nemu/build/obj/cpu/exec/relop.d b/nemu/build/obj/cpu/exec/relop.d new file mode 100644 index 0000000000000000000000000000000000000000..a68471574013a2c4fdc1f995d7fa4555fded1c35 --- /dev/null +++ b/nemu/build/obj/cpu/exec/relop.d @@ -0,0 +1,2 @@ +build/obj/cpu/exec/relop.o: src/cpu/exec/relop.cc include/common.h \ + include/debug.h include/common.h include/macro.h include/cpu/relop.h diff --git a/nemu/build/obj/cpu/exec/relop.o b/nemu/build/obj/cpu/exec/relop.o new file mode 100644 index 0000000000000000000000000000000000000000..820eb8730911531c490eafbc5f869373d288b819 Binary files /dev/null and b/nemu/build/obj/cpu/exec/relop.o differ diff --git a/nemu/build/obj/cpu/exec/special.d b/nemu/build/obj/cpu/exec/special.d new file mode 100644 index 0000000000000000000000000000000000000000..a395f91fdb9eba76b472c2c9a62ad5bfc8f91f26 --- /dev/null +++ b/nemu/build/obj/cpu/exec/special.d @@ -0,0 +1,6 @@ +build/obj/cpu/exec/special.o: src/cpu/exec/special.cc include/cpu/exec.h \ + include/nemu.h include/common.h include/debug.h include/macro.h \ + include/memory/memory.h include/common.h include/cpu/reg.h \ + include/cpu/decode.h include/cpu/rtl.h include/util/c_op.h \ + include/cpu/relop.h include/cpu/rtl-wrapper.h include/macro.h \ + include/monitor/monitor.h diff --git a/nemu/build/obj/cpu/exec/special.o b/nemu/build/obj/cpu/exec/special.o new file mode 100644 index 0000000000000000000000000000000000000000..0658eddf97a80928267b709c149eedac3d26213f Binary files /dev/null and b/nemu/build/obj/cpu/exec/special.o differ diff --git a/nemu/build/obj/cpu/exec/system.d b/nemu/build/obj/cpu/exec/system.d new file mode 100644 index 0000000000000000000000000000000000000000..714c33bbb3c8886f938ec366172d9c78b9f3bc26 --- /dev/null +++ b/nemu/build/obj/cpu/exec/system.d @@ -0,0 +1,5 @@ +build/obj/cpu/exec/system.o: src/cpu/exec/system.cc include/cpu/exec.h \ + include/nemu.h include/common.h include/debug.h include/macro.h \ + include/memory/memory.h include/common.h include/cpu/reg.h \ + include/cpu/decode.h include/cpu/rtl.h include/util/c_op.h \ + include/cpu/relop.h include/cpu/rtl-wrapper.h include/macro.h diff --git a/nemu/build/obj/cpu/exec/system.o b/nemu/build/obj/cpu/exec/system.o new file mode 100644 index 0000000000000000000000000000000000000000..3d551463e69f6adc5938ccce37d29c3d1fb2f333 Binary files /dev/null and b/nemu/build/obj/cpu/exec/system.o differ diff --git a/nemu/build/obj/cpu/intr.d b/nemu/build/obj/cpu/intr.d new file mode 100644 index 0000000000000000000000000000000000000000..860d341e244c7b15fc1ccb94ebd13e3cf104c6e4 --- /dev/null +++ b/nemu/build/obj/cpu/intr.d @@ -0,0 +1,5 @@ +build/obj/cpu/intr.o: src/cpu/intr.cc include/cpu/exec.h include/nemu.h \ + include/common.h include/debug.h include/macro.h include/memory/memory.h \ + include/common.h include/cpu/reg.h include/cpu/decode.h \ + include/cpu/rtl.h include/util/c_op.h include/cpu/relop.h \ + include/cpu/rtl-wrapper.h include/macro.h include/memory/mmu.h diff --git a/nemu/build/obj/cpu/intr.o b/nemu/build/obj/cpu/intr.o new file mode 100644 index 0000000000000000000000000000000000000000..01b0f26ed4ca6ef043e2a617c55ba03eeb0dbec7 Binary files /dev/null and b/nemu/build/obj/cpu/intr.o differ diff --git a/nemu/build/obj/cpu/reg.d b/nemu/build/obj/cpu/reg.d new file mode 100644 index 0000000000000000000000000000000000000000..57dfa53cd7ff400831ef0dd27e3491934d7a4c20 --- /dev/null +++ b/nemu/build/obj/cpu/reg.d @@ -0,0 +1,3 @@ +build/obj/cpu/reg.o: src/cpu/reg.cc include/nemu.h include/common.h \ + include/debug.h include/macro.h include/memory/memory.h include/common.h \ + include/cpu/reg.h diff --git a/nemu/build/obj/cpu/reg.o b/nemu/build/obj/cpu/reg.o new file mode 100644 index 0000000000000000000000000000000000000000..451237ba6dd9d0b064dc73cc1ccee2609c53d268 Binary files /dev/null and b/nemu/build/obj/cpu/reg.o differ diff --git a/nemu/build/obj/device/device.d b/nemu/build/obj/device/device.d new file mode 100644 index 0000000000000000000000000000000000000000..db086e90cbabaaaae3634b0a7ca5ff72905c5acb --- /dev/null +++ b/nemu/build/obj/device/device.d @@ -0,0 +1,2 @@ +build/obj/device/device.o: src/device/device.cc include/common.h \ + include/debug.h include/common.h include/macro.h diff --git a/nemu/build/obj/device/device.o b/nemu/build/obj/device/device.o new file mode 100644 index 0000000000000000000000000000000000000000..62f69ef9e0a12b44a1aab1b51637eb15c5224cde Binary files /dev/null and b/nemu/build/obj/device/device.o differ diff --git a/nemu/build/obj/device/io/mmio.d b/nemu/build/obj/device/io/mmio.d new file mode 100644 index 0000000000000000000000000000000000000000..3311072b8ee06b58cf709eed4bf9298578d6d67b --- /dev/null +++ b/nemu/build/obj/device/io/mmio.d @@ -0,0 +1,2 @@ +build/obj/device/io/mmio.o: src/device/io/mmio.cc include/common.h \ + include/debug.h include/common.h include/macro.h include/device/mmio.h diff --git a/nemu/build/obj/device/io/mmio.o b/nemu/build/obj/device/io/mmio.o new file mode 100644 index 0000000000000000000000000000000000000000..740ab9162509da5f763c2ee39e176fd1e304ba7b Binary files /dev/null and b/nemu/build/obj/device/io/mmio.o differ diff --git a/nemu/build/obj/device/io/port-io.d b/nemu/build/obj/device/io/port-io.d new file mode 100644 index 0000000000000000000000000000000000000000..bb5c5bb567b438e66a9c3516b5a46a1652dd07fb --- /dev/null +++ b/nemu/build/obj/device/io/port-io.d @@ -0,0 +1,3 @@ +build/obj/device/io/port-io.o: src/device/io/port-io.cc include/common.h \ + include/debug.h include/common.h include/macro.h \ + include/device/port-io.h diff --git a/nemu/build/obj/device/io/port-io.o b/nemu/build/obj/device/io/port-io.o new file mode 100644 index 0000000000000000000000000000000000000000..0fbc2d0bbed86e1bee8945dea98d6979d4adbc63 Binary files /dev/null and b/nemu/build/obj/device/io/port-io.o differ diff --git a/nemu/build/obj/device/keyboard.d b/nemu/build/obj/device/keyboard.d new file mode 100644 index 0000000000000000000000000000000000000000..11f95cdf72a8dbebb48726ead7f78d67e568ab4b --- /dev/null +++ b/nemu/build/obj/device/keyboard.d @@ -0,0 +1,3 @@ +build/obj/device/keyboard.o: src/device/keyboard.cc \ + include/device/port-io.h include/common.h include/debug.h \ + include/common.h include/macro.h include/monitor/monitor.h diff --git a/nemu/build/obj/device/keyboard.o b/nemu/build/obj/device/keyboard.o new file mode 100644 index 0000000000000000000000000000000000000000..cc25dcef80208d75cb865e945e2b16ac54ef6757 Binary files /dev/null and b/nemu/build/obj/device/keyboard.o differ diff --git a/nemu/build/obj/device/serial.d b/nemu/build/obj/device/serial.d new file mode 100644 index 0000000000000000000000000000000000000000..ff1884fbc5e5a85e42fbe089ff5d9dfd02039ef7 --- /dev/null +++ b/nemu/build/obj/device/serial.d @@ -0,0 +1,3 @@ +build/obj/device/serial.o: src/device/serial.cc include/common.h \ + include/debug.h include/common.h include/macro.h \ + include/device/port-io.h diff --git a/nemu/build/obj/device/serial.o b/nemu/build/obj/device/serial.o new file mode 100644 index 0000000000000000000000000000000000000000..3b03f65a09427cf10c6daa420a8ea7d8589dce38 Binary files /dev/null and b/nemu/build/obj/device/serial.o differ diff --git a/nemu/build/obj/device/timer.d b/nemu/build/obj/device/timer.d new file mode 100644 index 0000000000000000000000000000000000000000..14e134fea662a3757f0be7f72293f156d8ae7f0b --- /dev/null +++ b/nemu/build/obj/device/timer.d @@ -0,0 +1,3 @@ +build/obj/device/timer.o: src/device/timer.cc include/device/port-io.h \ + include/common.h include/debug.h include/common.h include/macro.h \ + include/monitor/monitor.h diff --git a/nemu/build/obj/device/timer.o b/nemu/build/obj/device/timer.o new file mode 100644 index 0000000000000000000000000000000000000000..4a1b6a7606aa0fe0fb72eed77639f5374c261c3d Binary files /dev/null and b/nemu/build/obj/device/timer.o differ diff --git a/nemu/build/obj/device/vga.d b/nemu/build/obj/device/vga.d new file mode 100644 index 0000000000000000000000000000000000000000..4ce8ab974f453c5e8014af711732ac19a94ad0c9 --- /dev/null +++ b/nemu/build/obj/device/vga.d @@ -0,0 +1,2 @@ +build/obj/device/vga.o: src/device/vga.cc include/common.h \ + include/debug.h include/common.h include/macro.h diff --git a/nemu/build/obj/device/vga.o b/nemu/build/obj/device/vga.o new file mode 100644 index 0000000000000000000000000000000000000000..21112916c507c41cffcfb42c0081c39a0ed6e79a Binary files /dev/null and b/nemu/build/obj/device/vga.o differ diff --git a/nemu/build/obj/main.d b/nemu/build/obj/main.d new file mode 100644 index 0000000000000000000000000000000000000000..ca04beb3909731f6ddbb6d65169bc55b952213c7 --- /dev/null +++ b/nemu/build/obj/main.d @@ -0,0 +1 @@ +build/obj/main.o: src/main.cc diff --git a/nemu/build/obj/main.o b/nemu/build/obj/main.o new file mode 100644 index 0000000000000000000000000000000000000000..45fa09190d28dd7ec816cb735dc1cca73b65abe0 Binary files /dev/null and b/nemu/build/obj/main.o differ diff --git a/nemu/build/obj/memory/memory.d b/nemu/build/obj/memory/memory.d new file mode 100644 index 0000000000000000000000000000000000000000..808cde41359548988c9c0579c4feeba73d3a87d8 --- /dev/null +++ b/nemu/build/obj/memory/memory.d @@ -0,0 +1,3 @@ +build/obj/memory/memory.o: src/memory/memory.cc include/nemu.h \ + include/common.h include/debug.h include/macro.h include/memory/memory.h \ + include/common.h include/cpu/reg.h diff --git a/nemu/build/obj/memory/memory.o b/nemu/build/obj/memory/memory.o new file mode 100644 index 0000000000000000000000000000000000000000..626c5c32f277d40aef63e3d402b52d93f64a26bc Binary files /dev/null and b/nemu/build/obj/memory/memory.o differ diff --git a/nemu/build/obj/misc/logo.d b/nemu/build/obj/misc/logo.d new file mode 100644 index 0000000000000000000000000000000000000000..4dc8a9fde520919270c320dc95ab50555d971e25 --- /dev/null +++ b/nemu/build/obj/misc/logo.d @@ -0,0 +1 @@ +build/obj/misc/logo.o: src/misc/logo.cc diff --git a/nemu/build/obj/misc/logo.o b/nemu/build/obj/misc/logo.o new file mode 100644 index 0000000000000000000000000000000000000000..e0e52d5881e20e46530279e0e398bc68f281a809 Binary files /dev/null and b/nemu/build/obj/misc/logo.o differ diff --git a/nemu/build/obj/monitor/cpu-exec.d b/nemu/build/obj/monitor/cpu-exec.d new file mode 100644 index 0000000000000000000000000000000000000000..84922648b65c9b1ef76a3fe0e95f32a356602aa7 --- /dev/null +++ b/nemu/build/obj/monitor/cpu-exec.d @@ -0,0 +1,3 @@ +build/obj/monitor/cpu-exec.o: src/monitor/cpu-exec.cc include/nemu.h \ + include/common.h include/debug.h include/macro.h include/memory/memory.h \ + include/common.h include/cpu/reg.h include/monitor/monitor.h diff --git a/nemu/build/obj/monitor/cpu-exec.o b/nemu/build/obj/monitor/cpu-exec.o new file mode 100644 index 0000000000000000000000000000000000000000..f14f130a95aa89b4b4460c54a567355d95a9c84d Binary files /dev/null and b/nemu/build/obj/monitor/cpu-exec.o differ diff --git a/nemu/build/obj/monitor/debug/expr.d b/nemu/build/obj/monitor/debug/expr.d new file mode 100644 index 0000000000000000000000000000000000000000..8f5a02a1d67fe9352bba2c1aa7a1ac480489c350 --- /dev/null +++ b/nemu/build/obj/monitor/debug/expr.d @@ -0,0 +1,3 @@ +build/obj/monitor/debug/expr.o: src/monitor/debug/expr.cc include/nemu.h \ + include/common.h include/debug.h include/macro.h include/memory/memory.h \ + include/common.h include/cpu/reg.h diff --git a/nemu/build/obj/monitor/debug/expr.o b/nemu/build/obj/monitor/debug/expr.o new file mode 100644 index 0000000000000000000000000000000000000000..4b07ace8b1634493ff430ecdb67cb06b9b329dd3 Binary files /dev/null and b/nemu/build/obj/monitor/debug/expr.o differ diff --git a/nemu/build/obj/monitor/debug/ui.d b/nemu/build/obj/monitor/debug/ui.d new file mode 100644 index 0000000000000000000000000000000000000000..f7d8124db7ca7154b5d8bd9009a3c73c5ed7fc2c --- /dev/null +++ b/nemu/build/obj/monitor/debug/ui.d @@ -0,0 +1,5 @@ +build/obj/monitor/debug/ui.o: src/monitor/debug/ui.cc \ + include/monitor/monitor.h include/monitor/expr.h include/common.h \ + include/debug.h include/common.h include/macro.h \ + include/monitor/watchpoint.h include/nemu.h include/memory/memory.h \ + include/cpu/reg.h diff --git a/nemu/build/obj/monitor/debug/ui.o b/nemu/build/obj/monitor/debug/ui.o new file mode 100644 index 0000000000000000000000000000000000000000..550cd7f2ed9892ef1b555b277dce41afe1071f3e Binary files /dev/null and b/nemu/build/obj/monitor/debug/ui.o differ diff --git a/nemu/build/obj/monitor/debug/watchpoint.d b/nemu/build/obj/monitor/debug/watchpoint.d new file mode 100644 index 0000000000000000000000000000000000000000..4e0225e7cc3f3576c580754288d12f8d89b366df --- /dev/null +++ b/nemu/build/obj/monitor/debug/watchpoint.d @@ -0,0 +1,3 @@ +build/obj/monitor/debug/watchpoint.o: src/monitor/debug/watchpoint.cc \ + include/monitor/watchpoint.h include/common.h include/debug.h \ + include/common.h include/macro.h include/monitor/expr.h diff --git a/nemu/build/obj/monitor/debug/watchpoint.o b/nemu/build/obj/monitor/debug/watchpoint.o new file mode 100644 index 0000000000000000000000000000000000000000..f3f5bc5ea84ca25a3c40b238325fd9ddb18efb00 Binary files /dev/null and b/nemu/build/obj/monitor/debug/watchpoint.o differ diff --git a/nemu/build/obj/monitor/diff-test/diff-test.d b/nemu/build/obj/monitor/diff-test/diff-test.d new file mode 100644 index 0000000000000000000000000000000000000000..514bd7a787f17fbe320ff080e4dab345643ad9e7 --- /dev/null +++ b/nemu/build/obj/monitor/diff-test/diff-test.d @@ -0,0 +1,5 @@ +build/obj/monitor/diff-test/diff-test.o: \ + src/monitor/diff-test/diff-test.cc include/nemu.h include/common.h \ + include/debug.h include/macro.h include/memory/memory.h include/common.h \ + include/cpu/reg.h include/monitor/monitor.h \ + src/monitor/diff-test/diff-test.h diff --git a/nemu/build/obj/monitor/diff-test/diff-test.o b/nemu/build/obj/monitor/diff-test/diff-test.o new file mode 100644 index 0000000000000000000000000000000000000000..7cd8b78eb0cd668c2682f80c6214d9c0c597df25 Binary files /dev/null and b/nemu/build/obj/monitor/diff-test/diff-test.o differ diff --git a/nemu/build/obj/monitor/diff-test/ref.d b/nemu/build/obj/monitor/diff-test/ref.d new file mode 100644 index 0000000000000000000000000000000000000000..31e38a4ef7401d98c44cdadf5cad186cc02a25a9 --- /dev/null +++ b/nemu/build/obj/monitor/diff-test/ref.d @@ -0,0 +1,4 @@ +build/obj/monitor/diff-test/ref.o: src/monitor/diff-test/ref.cc \ + include/nemu.h include/common.h include/debug.h include/macro.h \ + include/memory/memory.h include/common.h include/cpu/reg.h \ + src/monitor/diff-test/diff-test.h diff --git a/nemu/build/obj/monitor/diff-test/ref.o b/nemu/build/obj/monitor/diff-test/ref.o new file mode 100644 index 0000000000000000000000000000000000000000..81999594c0c0733072db4b84e86d22c2c8ffc02c Binary files /dev/null and b/nemu/build/obj/monitor/diff-test/ref.o differ diff --git a/nemu/build/obj/monitor/monitor.d b/nemu/build/obj/monitor/monitor.d new file mode 100644 index 0000000000000000000000000000000000000000..5b2fad4798e29c737b3980bfdde518e3c7f793d8 --- /dev/null +++ b/nemu/build/obj/monitor/monitor.d @@ -0,0 +1,3 @@ +build/obj/monitor/monitor.o: src/monitor/monitor.cc include/nemu.h \ + include/common.h include/debug.h include/macro.h include/memory/memory.h \ + include/common.h include/cpu/reg.h include/monitor/monitor.h diff --git a/nemu/build/obj/monitor/monitor.o b/nemu/build/obj/monitor/monitor.o new file mode 100644 index 0000000000000000000000000000000000000000..9cff86a92ba8478d82f768a343624d5180ac5903 Binary files /dev/null and b/nemu/build/obj/monitor/monitor.o differ diff --git a/nemu/include/common.h b/nemu/include/common.h index 9f0aaf0472e8afb7779857c5b8b55822c7e97e62..44d6c1a11d62a31f38517dae3a5b025f70fe159d 100644 --- a/nemu/include/common.h +++ b/nemu/include/common.h @@ -17,8 +17,6 @@ #include <assert.h> #include <string.h> -typedef uint8_t bool; - typedef uint32_t rtlreg_t; typedef uint32_t paddr_t; @@ -26,9 +24,6 @@ typedef uint32_t vaddr_t; typedef uint16_t ioaddr_t; -#define false 0 -#define true 1 - #include "debug.h" #include "macro.h" diff --git a/nemu/include/cpu/exec.h b/nemu/include/cpu/exec.h index 6ba7005c24517b82a8ce127f73646977cb1ce5f5..21b8e537e66b9cb79eb7d4f5a56c55fff7a2b4d3 100644 --- a/nemu/include/cpu/exec.h +++ b/nemu/include/cpu/exec.h @@ -11,7 +11,7 @@ typedef void (*EHelper) (vaddr_t *); static inline uint32_t instr_fetch(vaddr_t *eip, int len) { uint32_t instr = vaddr_read(*eip, len); #ifdef DEBUG - uint8_t *p_instr = (void *)&instr; + uint8_t *p_instr = (uint8_t *)&instr; int i; for (i = 0; i < len; i ++) { decoding.p += sprintf(decoding.p, "%02x ", p_instr[i]); @@ -30,12 +30,12 @@ static inline uint32_t instr_fetch(vaddr_t *eip, int len) { #define suffix_char(width) ((width) == 4 ? 'l' : ((width) == 1 ? 'b' : ((width) == 2 ? 'w' : '?'))) #define print_asm_template1(instr) \ - print_asm(str(instr) "%c %s", suffix_char(id_dest->width), id_dest->str) + print_asm(RLIB_MACRO_TO_CSTR(instr) "%c %s", suffix_char(id_dest->width), id_dest->str) #define print_asm_template2(instr) \ - print_asm(str(instr) "%c %s,%s", suffix_char(id_dest->width), id_src->str, id_dest->str) + print_asm(RLIB_MACRO_TO_CSTR(instr) "%c %s,%s", suffix_char(id_dest->width), id_src->str, id_dest->str) #define print_asm_template3(instr) \ - print_asm(str(instr) "%c %s,%s,%s", suffix_char(id_dest->width), id_src->str, id_src2->str, id_dest->str) + print_asm(RLIB_MACRO_TO_CSTR(instr) "%c %s,%s,%s", suffix_char(id_dest->width), id_src->str, id_src2->str, id_dest->str) #endif diff --git a/nemu/include/macro.h b/nemu/include/macro.h index 0f5cc95252db931c3a006709d8d6fcc6d7fa6cdc..20263916dfc743cebb8878bd52c52034cd68f683 100644 --- a/nemu/include/macro.h +++ b/nemu/include/macro.h @@ -1,8 +1,14 @@ #ifndef __MACRO_H__ #define __MACRO_H__ -#define str_temp(x) #x -#define str(x) str_temp(x) +// From rlib/macro.hpp +#ifndef _RLIB_MACRO_ENSTRING +#define _RLIB_MACRO_ENSTRING(_s) #_s +#endif + +#ifndef RLIB_MACRO_TO_CSTR +#define RLIB_MACRO_TO_CSTR(m) _RLIB_MACRO_ENSTRING(m) +#endif #define concat_temp(x, y) x ## y #define concat(x, y) concat_temp(x, y) diff --git a/nemu/src/cpu/decode/decode.c b/nemu/src/cpu/decode/decode.cc similarity index 100% rename from nemu/src/cpu/decode/decode.c rename to nemu/src/cpu/decode/decode.cc diff --git a/nemu/src/cpu/decode/modrm.c b/nemu/src/cpu/decode/modrm.cc similarity index 100% rename from nemu/src/cpu/decode/modrm.c rename to nemu/src/cpu/decode/modrm.cc diff --git a/nemu/src/cpu/exec/arith.c b/nemu/src/cpu/exec/arith.cc similarity index 100% rename from nemu/src/cpu/exec/arith.c rename to nemu/src/cpu/exec/arith.cc diff --git a/nemu/src/cpu/exec/cc.c b/nemu/src/cpu/exec/cc.cc similarity index 100% rename from nemu/src/cpu/exec/cc.c rename to nemu/src/cpu/exec/cc.cc diff --git a/nemu/src/cpu/exec/control.c b/nemu/src/cpu/exec/control.cc similarity index 100% rename from nemu/src/cpu/exec/control.c rename to nemu/src/cpu/exec/control.cc diff --git a/nemu/src/cpu/exec/data-mov.c b/nemu/src/cpu/exec/data-mov.cc similarity index 100% rename from nemu/src/cpu/exec/data-mov.c rename to nemu/src/cpu/exec/data-mov.cc diff --git a/nemu/src/cpu/exec/exec.c b/nemu/src/cpu/exec/exec.cc similarity index 100% rename from nemu/src/cpu/exec/exec.c rename to nemu/src/cpu/exec/exec.cc diff --git a/nemu/src/cpu/exec/logic.c b/nemu/src/cpu/exec/logic.cc similarity index 100% rename from nemu/src/cpu/exec/logic.c rename to nemu/src/cpu/exec/logic.cc diff --git a/nemu/src/cpu/exec/prefix.c b/nemu/src/cpu/exec/prefix.cc similarity index 100% rename from nemu/src/cpu/exec/prefix.c rename to nemu/src/cpu/exec/prefix.cc diff --git a/nemu/src/cpu/exec/relop.c b/nemu/src/cpu/exec/relop.cc similarity index 100% rename from nemu/src/cpu/exec/relop.c rename to nemu/src/cpu/exec/relop.cc diff --git a/nemu/src/cpu/exec/special.c b/nemu/src/cpu/exec/special.cc similarity index 97% rename from nemu/src/cpu/exec/special.c rename to nemu/src/cpu/exec/special.cc index fb5d51dd304b51c3497816945de51a5d2bc7f048..9580a48167cbbd22f4e3b12ae0f65367d1b618dd 100644 --- a/nemu/src/cpu/exec/special.c +++ b/nemu/src/cpu/exec/special.cc @@ -18,7 +18,7 @@ make_EHelper(inv) { temp[0] = instr_fetch(eip, 4); temp[1] = instr_fetch(eip, 4); - uint8_t *p = (void *)temp; + uint8_t *p = (uint8_t *)temp; printf("invalid opcode(eip = 0x%08x): %02x %02x %02x %02x %02x %02x %02x %02x ...\n\n", ori_eip, p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7]); diff --git a/nemu/src/cpu/exec/system.c b/nemu/src/cpu/exec/system.cc similarity index 100% rename from nemu/src/cpu/exec/system.c rename to nemu/src/cpu/exec/system.cc diff --git a/nemu/src/cpu/intr.c b/nemu/src/cpu/intr.cc similarity index 100% rename from nemu/src/cpu/intr.c rename to nemu/src/cpu/intr.cc diff --git a/nemu/src/cpu/reg.c b/nemu/src/cpu/reg.cc similarity index 100% rename from nemu/src/cpu/reg.c rename to nemu/src/cpu/reg.cc diff --git a/nemu/src/device/device.c b/nemu/src/device/device.cc similarity index 100% rename from nemu/src/device/device.c rename to nemu/src/device/device.cc diff --git a/nemu/src/device/io/mmio.c b/nemu/src/device/io/mmio.cc similarity index 100% rename from nemu/src/device/io/mmio.c rename to nemu/src/device/io/mmio.cc diff --git a/nemu/src/device/io/port-io.c b/nemu/src/device/io/port-io.cc similarity index 100% rename from nemu/src/device/io/port-io.c rename to nemu/src/device/io/port-io.cc diff --git a/nemu/src/device/keyboard.c b/nemu/src/device/keyboard.cc similarity index 85% rename from nemu/src/device/keyboard.c rename to nemu/src/device/keyboard.cc index a801460e1b3e446e5f5944e602dcb43582c74b6a..50859e5339f0fd039fa7a9d623a948fac2b92823 100644 --- a/nemu/src/device/keyboard.c +++ b/nemu/src/device/keyboard.cc @@ -24,10 +24,14 @@ enum { _KEYS(_KEY_NAME) }; -#define XX(k) [concat(SDL_SCANCODE_, k)] = concat(_KEY_, k), -static uint32_t keymap[256] = { - _KEYS(XX) -}; +#define XX(k) keymap[concat(SDL_SCANCODE_, k)] = concat(_KEY_, k); +static uint32_t keymap[256] = {}; + +static struct keymap_initializer { + keymap_initializer() { + _KEYS(XX) + } +} _keymap_initializer; #define KEY_QUEUE_LEN 1024 static int key_queue[KEY_QUEUE_LEN]; @@ -58,6 +62,6 @@ static void i8042_data_io_handler(ioaddr_t addr, int len, bool is_write) { } void init_i8042() { - i8042_data_port_base = add_pio_map(I8042_DATA_PORT, 4, i8042_data_io_handler); + i8042_data_port_base = (uint32_t *)add_pio_map(I8042_DATA_PORT, 4, i8042_data_io_handler); i8042_data_port_base[0] = _KEY_NONE; } diff --git a/nemu/src/device/serial.c b/nemu/src/device/serial.cc similarity index 78% rename from nemu/src/device/serial.c rename to nemu/src/device/serial.cc index 69b1b4809b78f7701930247574e5fe4ed6d0308c..17a5b65a9d5d937a9338a497d87e092961cf4557 100644 --- a/nemu/src/device/serial.c +++ b/nemu/src/device/serial.cc @@ -22,7 +22,7 @@ static void serial_ch_io_handler(ioaddr_t addr, int len, bool is_write) { } void init_serial() { - serial_ch_base = add_pio_map(SERIAL_PORT + CH_OFFSET, 1, serial_ch_io_handler); - serial_lsr_base = add_pio_map(SERIAL_PORT + LSR_OFFSET, 1, NULL); + serial_ch_base = (uint8_t *)add_pio_map(SERIAL_PORT + CH_OFFSET, 1, serial_ch_io_handler); + serial_lsr_base = (uint8_t *)add_pio_map(SERIAL_PORT + LSR_OFFSET, 1, NULL); serial_lsr_base[0] = 0x20; /* the status is always free */ } diff --git a/nemu/src/device/timer.c b/nemu/src/device/timer.cc similarity index 89% rename from nemu/src/device/timer.c rename to nemu/src/device/timer.cc index bb28621ae5029305e44828cfaf08a4b5cef7b544..9fd1ea7256addfacb9b0026e089ea1d8e84304f9 100644 --- a/nemu/src/device/timer.c +++ b/nemu/src/device/timer.cc @@ -24,5 +24,5 @@ void rtc_io_handler(ioaddr_t addr, int len, bool is_write) { } void init_timer() { - rtc_port_base = add_pio_map(RTC_PORT, 4, rtc_io_handler); + rtc_port_base = (uint32_t *)add_pio_map(RTC_PORT, 4, rtc_io_handler); } diff --git a/nemu/src/device/vga.c b/nemu/src/device/vga.cc similarity index 100% rename from nemu/src/device/vga.c rename to nemu/src/device/vga.cc diff --git a/nemu/src/main.c b/nemu/src/main.cc similarity index 100% rename from nemu/src/main.c rename to nemu/src/main.cc diff --git a/nemu/src/memory/memory.c b/nemu/src/memory/memory.cc similarity index 100% rename from nemu/src/memory/memory.c rename to nemu/src/memory/memory.cc diff --git a/nemu/src/misc/logo.c b/nemu/src/misc/logo.cc similarity index 100% rename from nemu/src/misc/logo.c rename to nemu/src/misc/logo.cc diff --git a/nemu/src/monitor/cpu-exec.c b/nemu/src/monitor/cpu-exec.cc similarity index 100% rename from nemu/src/monitor/cpu-exec.c rename to nemu/src/monitor/cpu-exec.cc diff --git a/nemu/src/monitor/debug/expr.c b/nemu/src/monitor/debug/expr.cc similarity index 100% rename from nemu/src/monitor/debug/expr.c rename to nemu/src/monitor/debug/expr.cc diff --git a/nemu/src/monitor/debug/ui.c b/nemu/src/monitor/debug/ui.cc similarity index 69% rename from nemu/src/monitor/debug/ui.c rename to nemu/src/monitor/debug/ui.cc index f0415ffaa9c4738cb23c063a7d970b55be122e9d..32f7dada9037b3a4c89b72877042b5f1486ff1ee 100644 --- a/nemu/src/monitor/debug/ui.c +++ b/nemu/src/monitor/debug/ui.cc @@ -32,6 +32,14 @@ static int cmd_c(char *args) { return 0; } +static int cmd_n(char *args) { + cpu_exec(1); + return 0; +} + +static int cmd_info(char *args); +static int cmd_x(char *args); + static int cmd_q(char *args) { return -1; } @@ -39,12 +47,15 @@ static int cmd_q(char *args) { static int cmd_help(char *args); static struct { - char *name; - char *description; + const char *name; + const char *description; int (*handler) (char *); } cmd_table [] = { { "help", "Display informations about all supported commands", cmd_help }, { "c", "Continue the execution of the program", cmd_c }, + { "n", "= GDB `n`", cmd_n }, + { "info", "= GDB `info`, only supporting `info r`", cmd_info }, + { "x", "x <bytes> <start address>", cmd_x }, { "q", "Exit NEMU", cmd_q }, /* TODO: Add more commands */ @@ -113,3 +124,30 @@ void ui_mainloop(int is_batch_mode) { if (i == NR_CMD) { printf("Unknown command '%s'\n", cmd); } } } + +#include <stdexcept> +#include <rlib/stdio.hpp> +using namespace rlib; +using namespace rlib::literals; + +#include <sstream> + +auto dumpReg(uint32_t val) { + return string("[32b={}{}, L16b={}{}]").format(std::hex, val, (uint16_t)val, std::dec); +} + +static int cmd_info(char *args) { + if("r"_rs != args) { + println("Error: only 'info r' is supported."); + return 1; + } + println("Registers:"); + printfln("%eax={}, %ebx={}, %ecx={}, %edx={}", dumpReg(cpu.eax), dumpReg(cpu.ebx), dumpReg(cpu.ecx), dumpReg(cpu.edx)); + printfln("%esp={}, %ebp={}, %esi={}, %edi={}", dumpReg(cpu.esp), dumpReg(cpu.ebp), dumpReg(cpu.esi), dumpReg(cpu.edi)); + printfln("%eip={}", dumpReg(cpu.eip)); + return 0; +} + +static int cmd_x(char *args) { + return 0; +} \ No newline at end of file diff --git a/nemu/src/monitor/debug/watchpoint.c b/nemu/src/monitor/debug/watchpoint.cc similarity index 100% rename from nemu/src/monitor/debug/watchpoint.c rename to nemu/src/monitor/debug/watchpoint.cc diff --git a/nemu/src/monitor/diff-test/diff-test.c b/nemu/src/monitor/diff-test/diff-test.cc similarity index 78% rename from nemu/src/monitor/diff-test/diff-test.c rename to nemu/src/monitor/diff-test/diff-test.cc index 574678fd4abd196de08ed4cc40b2942e01b59e26..2c290440e513df56d1388e2083dbcef382c4aa2e 100644 --- a/nemu/src/monitor/diff-test/diff-test.c +++ b/nemu/src/monitor/diff-test/diff-test.cc @@ -26,19 +26,19 @@ void init_difftest(char *ref_so_file, long img_size) { handle = dlopen(ref_so_file, RTLD_LAZY | RTLD_DEEPBIND); assert(handle); - ref_difftest_memcpy_from_dut = dlsym(handle, "difftest_memcpy_from_dut"); + ref_difftest_memcpy_from_dut = (decltype(ref_difftest_memcpy_from_dut))dlsym(handle, "difftest_memcpy_from_dut"); assert(ref_difftest_memcpy_from_dut); - ref_difftest_getregs = dlsym(handle, "difftest_getregs"); + ref_difftest_getregs = (decltype(ref_difftest_getregs))dlsym(handle, "difftest_getregs"); assert(ref_difftest_getregs); - ref_difftest_setregs = dlsym(handle, "difftest_setregs"); + ref_difftest_setregs = (decltype(ref_difftest_setregs))dlsym(handle, "difftest_setregs"); assert(ref_difftest_setregs); - ref_difftest_exec = dlsym(handle, "difftest_exec"); + ref_difftest_exec = (decltype(ref_difftest_exec))dlsym(handle, "difftest_exec"); assert(ref_difftest_exec); - void (*ref_difftest_init)(void) = dlsym(handle, "difftest_init"); + void (*ref_difftest_init)(void) = (decltype(ref_difftest_init))dlsym(handle, "difftest_init"); assert(ref_difftest_init); Log("Differential testing: \33[1;32m%s\33[0m", "ON"); diff --git a/nemu/src/monitor/diff-test/ref.c b/nemu/src/monitor/diff-test/ref.cc similarity index 100% rename from nemu/src/monitor/diff-test/ref.c rename to nemu/src/monitor/diff-test/ref.cc diff --git a/nemu/src/monitor/monitor.c b/nemu/src/monitor/monitor.cc similarity index 100% rename from nemu/src/monitor/monitor.c rename to nemu/src/monitor/monitor.cc diff --git a/nemu/tools/gen-expr/gen-expr.c b/nemu/tools/gen-expr/gen-expr.cc similarity index 100% rename from nemu/tools/gen-expr/gen-expr.c rename to nemu/tools/gen-expr/gen-expr.cc diff --git a/nemu/tools/qemu-diff/src/diff-test.c b/nemu/tools/qemu-diff/src/diff-test.cc similarity index 100% rename from nemu/tools/qemu-diff/src/diff-test.c rename to nemu/tools/qemu-diff/src/diff-test.cc diff --git a/nemu/tools/qemu-diff/src/gdb-host.c b/nemu/tools/qemu-diff/src/gdb-host.cc similarity index 100% rename from nemu/tools/qemu-diff/src/gdb-host.c rename to nemu/tools/qemu-diff/src/gdb-host.cc diff --git a/nemu/tools/qemu-diff/src/protocol.c b/nemu/tools/qemu-diff/src/protocol.cc similarity index 100% rename from nemu/tools/qemu-diff/src/protocol.c rename to nemu/tools/qemu-diff/src/protocol.cc