Copyright (©) 2024 Frosty515
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
- 64-bit architecture
- Full design can be found in docs/design.md
- Design of some internal aspects can be found in docs/internals.md
- CMake
- Ninja
- A C/C++ compiler that supports C23 and C++23
- run
sudo apt update && sudo apt install build-essential cmake ninja-build
to install dependencies
- run
sudo dnf install gcc gcc-c++ cmake ninja-build
to install dependencies
- run
sudo pacman -Syu base-devel cmake ninja
to install dependencies
- run
sudo emerge --ask --verbose sys-devel/gcc sys-devel/binutils dev-build/cmake dev-build/ninja
to install dependencies
- run
mkdir build && cd build
to create a build directory and enter it - run
cmake -GNinja ..
to generate the build files.-DBUILD_CONFIG=<config>
can be added to the cmake command to specify the build type.<config>
can beDebug
orRelease
. It defaults toRelease
.-DBUILD_ARCHITECTURE=<arch>
can be added to the cmake command to specify the architecture. Currently, the only supported architecture isx86_64
. It defaults tox86_64
. - run
ninja install
to build and install to the src directory. The binaries will be in thebin
directory in the src directory.
- In the source directory, run
./bin/Assembler < -p path/to/assembly > < -o path/to/binary >
to assemble the assembly file.
- In the source directory, run
./bin/Emulator < -p path/to/binary > [ -m RAM size ]
to run the emulator. - The RAM size is optional and defaults to 1 MiB.
- The assembler and emulator are still in development and may not work as expected. Please report any issues you find.