From fad9c6aed2245e15c9d10a78fc3e53e15fe8b897 Mon Sep 17 00:00:00 2001 From: Ivan Movchan Date: Sat, 15 Feb 2025 22:27:10 +0300 Subject: [PATCH 1/6] Upload new README --- README.md | 241 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 147 insertions(+), 94 deletions(-) diff --git a/README.md b/README.md index bce9ca7e..0d937f8e 100644 --- a/README.md +++ b/README.md @@ -1,94 +1,147 @@ -
- - - - yes - -
- -

Toolkit for custom ISA

- -

- - GitHub opened issues - Version - CI status - Status - License - Stars -

- - - - - -
- -HyperCPU is a set of programs, created to work with my own simple ISA. -Project was created for fun, but took a lot of time, and i learned a lot in process. - -
- ->[!IMPORTANT] -> Project is almost ready to be used. Wait for 1.0 release to try it out, or build it locally, test and report found issues. - -Tools include: -- **hCPU emulator** -- **hASM assembler** -- **hASM disassembler** - -### Roadmap -You can find roadmap [here](roadmap.md). - -## Building guide ->[!WARNING] -> Project requires compiler with C++23 support. CLang 19 and GCC 14 satisfy that requirement. -### Dependencies -HyperCPU project has some external dependencies, like: -- re2 -- libfmt -- googletest (optional, required for building tests on Release profile) - -To install them, use the following listing: - -APT-based distros: -``` -sudo apt install libre2-dev libfmt-dev libgtest-dev googletest -``` - -Pacman-based distros: -``` -sudo pacman -S re2 fmt gtest -``` - -Portage-based distros: -``` -sudo emerge re2 libfmt gtest -``` - -### Building project -``` -git clone https://github.com/HyperWinX/HyperCPU --recursive && cd HyperCPU -cmake -S. -Bbuild -G "Ninja" -DCMAKE_BUILD_TYPE=Release -ninja -C build default -j8 -``` - -That's all, all tools are built. - -### Configuring CMake -Available options: -- CMAKE_BUILD_TYPE:STRING - should be always specified. Release and Debug builds are available. -- HCPU_SANITIZERS_ENABLED:BOOL - sanitizers are always enabled even in Release build. Use -DHCPU_SANITIZERS_ENABLED:BOOL=OFF to disable them. - -### Building documentation -Building documentation requires sphinx installed. After you installed sphinx, go to docs directory and do: -``` -make html -``` -After that, you will get output in docs/_build/html directory. Open index.html to get started. +
+ + + + HyperCPU + +
+ +

HyperCPU - the hyper toolkit for custom hyper ISA

+ +

+ What is it? + | + Roadmap + | + Installation + | + Usage + | + Contributing + | + Authors + | + License +

+ +

+ + GitHub opened issues + Version + CI status + Status + License + Stars +

+ +>[!IMPORTANT] +> HyperCPU is almost ready for use! Wait for 1.0 release to try it out or build the project locally, test and report found issues. + +HyperCPU screenshot + +## What is it? + +HyperCPU is a set of programs, created to work with my own simple ISA (instruction set architecture). The project was created for fun, but it took a lot of time (and nerves), and I learned a lot while working on it. + +HyperCPU toolkit includes: +* **hCPU emulator**; +* **hASM assembler**; +* **hASM disassembler**. + +>[!WARNING] +> HyperCPU supports Linux systems only. Do not even try to build it under Windows. + +## Roadmap + +You can find the project roadmap [here](ROADMAP.md). + +## Installation + +At the moment of writing this text, HyperCPU installation is done by building the whole project from source codes. Maybe one day HyperCPU will start distributing release tarballs for much easier installation, but who knows. + +### Building from source codes + +HyperCPU requires these tools and libraries: + +* C++ compiler with C++23 standard support (i. e. `gcc` >= `14`); +* `clang` >= `19`; +* `cmake`, `ninja` - build systems; +* `re2` - regular expressions parser; +* `libfmt` - formatting library; +* `googletest` - required for building tests in Release build profile; +* `python3`, `python3-pip`, `sphinx` and `sphinx-rtd-theme` (should be installed through `pip` or your system package manager) - required for building a documentation. + +There are a few options (definitions) that can be used with `cmake`: +* `CMAKE_BUILD_TYPE`:`STRING` - project build profile (`Release` or `Debug`), should be always specified; +* `HCPU_SANITIZERS_ENABLED`:`BOOL` - HyperCPU sanitizers (enabled by default); use `-DHCPU_SANITIZERS_ENABLED:BOOL=OFF` to disable them. + +After installing dependencies, open the terminal and run these commands: + +```bash +git clone https://github.com/HyperWinX/HyperCPU --recursive +cd HyperCPU +cmake -S. -Bbuild -G "Ninja" -DCMAKE_BUILD_TYPE=Release +ninja -C build default -j$(nproc) +``` + +That's all. The compiled binaries should be located in `build` directory. + +Run `cd docs && make html` to build a documentation. After that go to `docs/_build/html` directory, open `index.html` and start reading. + +## Usage + +``` +Usage: hcasm [--help] [--version] [-o VAR] [-c] [-v VAR] source + +Positional arguments: + source source file to be assembled [required] + +Optional arguments: + -h, --help shows help message and exits + -v, --version prints version information and exits + -o name of the binary file + -c compile to object file + -v set verbosity level. possible modes: + - debug + - info + - warning + - error [nargs=0..1] [default: "warning"] + +Usage: hcemul [--help] [--version] [-v VAR] binary + +Positional arguments: + binary binary file to execute [required] + +Optional arguments: + -h, --help shows help message and exits + -v, --version prints version information and exits + -v set verbosity level. possible modes: + - debug + - info + - warning + - error [nargs=0..1] [default: "debug"] +``` + +## Contributing + +HyperCPU is in active development, and we will be happy to hear any feedback from you. Do not hesitate to report bugs or suggest any ideas using "Issues" page. + +>[!IMPORTANT] +>Please send your pull requests to `dev` repository branch (not `master`). + +Thank you for your interest in HyperCPU. + +## Authors + +* [HyperWin](https://github.com/HyperWinX) (2024 - present time) - idea, code, documentation. +* [Ivan Movchan](https://github.com/ivan-movchan) (2025 - present time) - artwork. + +## License + +HyperCPU is a free software licensed under [GNU General Public License 3.0](LICENSE). \ No newline at end of file From 4d30808910c5b096fe9bb7515219698554a36185 Mon Sep 17 00:00:00 2001 From: Ivan Movchan Date: Sat, 15 Feb 2025 22:27:23 +0300 Subject: [PATCH 2/6] Delete git directory --- git/logo.png | Bin 12317 -> 0 bytes git/logo_dark.png | Bin 12314 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 git/logo.png delete mode 100644 git/logo_dark.png diff --git a/git/logo.png b/git/logo.png deleted file mode 100644 index fe58e40314283dc07039fe29c7cf1e1a60b06bff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12317 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 diff --git a/git/logo_dark.png b/git/logo_dark.png deleted file mode 100644 index deecfc0262f619ca8230053080a1d02649c8cccd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12314 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 From dfe718cb095bbcfc9eee4bdf0990a669ff115d4b Mon Sep 17 00:00:00 2001 From: Ivan Movchan Date: Sat, 15 Feb 2025 22:27:43 +0300 Subject: [PATCH 3/6] Upload images directory (logos + screenshot) --- images/logo.png | Bin 0 -> 12317 bytes images/logo_dark.png | Bin 0 -> 12314 bytes images/screenshot.png | Bin 0 -> 8393 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/logo.png create mode 100644 images/logo_dark.png create mode 100644 images/screenshot.png diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..fe58e40314283dc07039fe29c7cf1e1a60b06bff GIT binary patch literal 12317 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 literal 0 HcmV?d00001 diff --git a/images/logo_dark.png b/images/logo_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..deecfc0262f619ca8230053080a1d02649c8cccd GIT binary patch literal 12314 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 literal 0 HcmV?d00001 diff --git a/images/screenshot.png b/images/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..0af2b7d8c21351d53fab29f3755ba890f19ee8be GIT binary patch literal 8393 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 literal 0 HcmV?d00001 From 2f8f8823b93841a3c7efe3dbd021a253d319e1d5 Mon Sep 17 00:00:00 2001 From: Ivan Movchan Date: Sat, 15 Feb 2025 22:28:11 +0300 Subject: [PATCH 4/6] Upload "Hello, world!" example code file --- examples/hello_world.s | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 examples/hello_world.s diff --git a/examples/hello_world.s b/examples/hello_world.s new file mode 100644 index 00000000..acee77d2 --- /dev/null +++ b/examples/hello_world.s @@ -0,0 +1,16 @@ +main: + write xlll0, 'H'; + write xlll0, 'e'; + write xlll0, 'l'; + write xlll0, 'l'; + write xlll0, 'o'; + write xlll0, ','; + write xlll0, ' '; + write xlll0, 'w'; + write xlll0, 'o'; + write xlll0, 'r'; + write xlll0, 'l'; + write xlll0, 'd'; + write xlll0, '!'; + write xlll0, 0u10; + halt; \ No newline at end of file From 128e3d4a1bcfea074b405618cc9aa195677c4519 Mon Sep 17 00:00:00 2001 From: Ivan Movchan Date: Sat, 15 Feb 2025 22:28:25 +0300 Subject: [PATCH 5/6] Delete roadmap.md --- roadmap.md | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 roadmap.md diff --git a/roadmap.md b/roadmap.md deleted file mode 100644 index 6e096d88..00000000 --- a/roadmap.md +++ /dev/null @@ -1,21 +0,0 @@ -# HyperCPU Roadmap - -**Current goal: release 1.0**. - -- [ ] Review whole documentation -- [ ] Improve test coverage -- [x] Implement emulator entry point -- [x] Implement low-latency console I/O mechanism for emulator (using ports) -- [x] Solve not-yet-defined label references - - -### Release 1.1 -- [ ] Add comparison instruction, conditional call/jmp -- [ ] Add build system functionality to the assembler, implement build configurations -- [ ] Write proper benchmarks - -### Release 1.2 -- [ ] Implement ncurses-based UI and standard to communicate with it - -### Release 2.0 -- [ ] Implement linking functionality From 4601f872ec5283db15e87012289e6743b3ccee4f Mon Sep 17 00:00:00 2001 From: Ivan Movchan Date: Sat, 15 Feb 2025 22:28:40 +0300 Subject: [PATCH 6/6] Reupload the project roadmap file --- ROADMAP.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 ROADMAP.md diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 00000000..6e096d88 --- /dev/null +++ b/ROADMAP.md @@ -0,0 +1,21 @@ +# HyperCPU Roadmap + +**Current goal: release 1.0**. + +- [ ] Review whole documentation +- [ ] Improve test coverage +- [x] Implement emulator entry point +- [x] Implement low-latency console I/O mechanism for emulator (using ports) +- [x] Solve not-yet-defined label references + + +### Release 1.1 +- [ ] Add comparison instruction, conditional call/jmp +- [ ] Add build system functionality to the assembler, implement build configurations +- [ ] Write proper benchmarks + +### Release 1.2 +- [ ] Implement ncurses-based UI and standard to communicate with it + +### Release 2.0 +- [ ] Implement linking functionality