Go to file
Yanyan Jiang 0730dd6610 reduce output file size 2017-05-31 05:40:06 -04:00
am reduce output file size 2017-05-31 05:40:06 -04:00
apps fix lzip memory alignment problem 2017-05-30 03:43:47 -04:00
libs use klib in cputests 2017-05-30 23:32:42 -04:00
tests use klib in cputests 2017-05-30 23:32:42 -04:00
.gitignore correct scanline 2017-05-28 07:38:52 -04:00
Makefile refactor makefile architecture 2017-05-29 17:05:36 +08:00
Makefile.app fix makefile bug 2017-05-30 03:18:30 -04:00
Makefile.check code cleanup and add docs 2017-05-22 02:23:43 +08:00
Makefile.compile Makefile: use -MMD instead of -MD 2017-05-30 13:18:14 +08:00
Makefile.lib reduce output file size 2017-05-31 05:40:06 -04:00
README.md code cleanup and add docs 2017-05-22 02:23:43 +08:00
SPEC.md code cleanup and add docs 2017-05-22 02:23:43 +08:00

README.md

The Abstract Machine (AM)

抽象计算机:必要的抽象,帮你编写一个完整的计算机系统!

目录组织:

  • am/AM头文件、每个体系结构分别实现的AM代码。
  • klib/建立在AM上、体系结构无关的基础运行库提供诸如memcpy等基础功能。
  • apps/一些运行在AM上应用程序示例。

AM Specification

参考:AM Specification

创建一个AM应用

在任何目录都可以创建运行在AM上的应用程序。程序用C/C++语言编写除AM之外无法调用其他库函数但可以引用stdarg.h, limits.h等包含体系结构相关数据定义的头文件)。

为此你需要在应用程序项目的根目录添加一个Makefile

NAME = app-name
SRCS = src/main.c src/help.c src/lib.cpp
include $(AM_HOME)/Makefile.app

一些注意事项:

  • NAME定义了应用的名字。编译后会在build/目录里出现以此命名的应用程序。

  • SRCS指定了编译应用所需的源文件。可以放在应用目录中的任意位置。

  • 应用目录下的include/目录会被添加到编译的-I选项中。

  • 环境变量AM_HOME需要包含nexus-am项目的根目录的绝对路径

编译时,首先确保AM_HOME正确设置,然后执行make ARCH=体系结构名编译。例如make ARCH=native将会编译成本地可运行的项目,make ARCH=mips32-minimal生成用于仿真的MIPS32程序。

体系结构相关说明

native

只支持TRM和IOE。

x86-qemu

完整支持。(部分特性仍待重构)。

mips32-minimal

只支持TRM和部分IOE。

mips32-npc

持续开发中。