edb74abb35 | ||
---|---|---|
am | ||
apps | ||
libs | ||
tests | ||
.gitignore | ||
Makefile | ||
Makefile.app | ||
Makefile.check | ||
Makefile.compile | ||
Makefile.lib | ||
README.md | ||
SPEC.md |
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
持续开发中。