You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Project logo, README and code examples updates (#35)
* Rename CONTRIBUTION.md to CONTRIBUTING.md, as recommended by GitHub Docs
Signed-off-by: Ivan Movchan <ivan.movchan.07@gmail.com>
* New code examples!
1. Uploaded new programs:
* hello-world.s - an updated "Hello World" program using string literals;
* escape-sequences.s - a program demonstrating escape sequences processing by HyperCPU;
* compare.s - a program demonstrating compare and conditional jump commands.
2. Renamed hello-world.s to hello-world-legacy.s.
Signed-off-by: Ivan Movchan <ivan.movchan.07@gmail.com>
* Update project logo
Signed-off-by: Ivan Movchan <ivan.movchan.07@gmail.com>
* Rewrite contributing guidelines
Signed-off-by: Ivan Movchan <ivan.movchan.07@gmail.com>
* Update building instructions and other stuff
Signed-off-by: Ivan Movchan <ivan.movchan.07@gmail.com>
* Minor changes in ROADMAP
Signed-off-by: Ivan Movchan <ivan.movchan.07@gmail.com>
* Hotfix: 2 spaces tabulation according to coding style guidelines
Signed-off-by: Ivan Movchan <ivan.movchan.07@gmail.com>
* README minor fixes
Signed-off-by: Ivan Movchan <ivan.movchan.07@gmail.com>
* Hotfix: remove CMake from dependencies
Signed-off-by: Ivan Movchan <ivan.movchan.07@gmail.com>
* Hotfix: update architecture names
Signed-off-by: Ivan Movchan <ivan.movchan.07@gmail.com>
---------
Signed-off-by: Ivan Movchan <ivan.movchan.07@gmail.com>
This file describes the contributing guidelines of the project.
4
+
5
+
If you are going to work with code, we strongly recommend reading [Coding style](#coding-style) section at the end of file.
6
+
7
+
## Project collaborators
8
+
9
+
Clone repository locally and create a new branch from `master` with some senseful name.
10
+
11
+
> [!TIP]
12
+
> Ask yourself: what are you going to do? What feature are you going to implement (or what bug are you going to fix)?
13
+
>
14
+
> **Examples of BAD branch names:**`r0ego03rg750yt3w4p37w8ypt98bo4wy49wyeuys9o49suebs9o84y3p47304p34bt3tb5o94ba0843twp`, `vasyapupkinwashere`.
15
+
>
16
+
> **Examples of GOOD branch names:**`fix-zero-division-error`, `implement-windows-support`.
17
+
18
+
Do your work on that branch, but **do not** touch others. Every push to any branch except `master` starts a CI workflow with minimal tests.
19
+
20
+
When you are ready, make a pull request (PR) to `master` branch. When the PR gets created, you have to track following checks: `CodeQL`, `Codacy`, main CI workflow that runs extended tests, and the job that builds the project on multiple platforms.
21
+
22
+
If MentatBot tells you what can be improved, it is better that you improve it :)
23
+
24
+
When all CI jobs finish successfully, just wait for project owner to review and approve your work and, finally, merge your PR.
25
+
26
+
Voila! Your changes have been merged and accepted to the project.
27
+
28
+
## Contributors
29
+
30
+
The same stuff as for project collaborators, except that you also have to fork the repository and work there. You will probably have to disable GitHub Actions or connect the self-hosted runner (no guarantee that HyperCPU workflows will execute successfully on custom runner).
31
+
32
+
## Coding style
33
+
34
+
### Identifiers
35
+
36
+
Use *PascalCase* for namespaces, class names and functions; *snake_case* for local variables and class fields.
37
+
38
+
### Tabs
39
+
40
+
2 spaces long.
41
+
42
+
### Whitespaces
43
+
44
+
A single space should be between operators, and no spaces should be between parenthesis and arguments.
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.
35
15
36
16
HyperCPU project includes:
@@ -40,10 +20,15 @@ HyperCPU project includes:
40
20
41
21
See [ROADMAP.md](ROADMAP.md) for project ideas and tasks.
42
22
23
+
>[!IMPORTANT]
24
+
> HyperCPU is almost ready for use! Wait for 1.0 release to try it out or build the project yourself, test it and report issues.
> HyperCPU supports 64-bit GNU/Linux systems only. It is known to be successfully built and running on `amd64`and `aarch64` architectures.
31
+
> HyperCPU supports GNU/Linux systems only. It is known to be successfully built on `x86_32`, `x86_64`and `ARMv8` architectures.
47
32
>
48
33
> HyperCPU fails to build and/or work properly under \*BSD systems — please do not ask us for support of these systems. Windows support is also not planned.
49
34
@@ -55,37 +40,41 @@ Pre-compiled binaries are currently not available. Sorry.
55
40
56
41
Building HyperCPU requires these dependencies to be installed:
57
42
58
-
***C++20 compilers:** GCC 12+, Clang 14+.
59
-
***Build system:** Bazel.
60
-
61
-
Generating the documentation in HTML format requires Python 3 and a few modules (`python3-sphinx`, `python3-sphinx-rtd-theme`) to be installed.
43
+
* GCC `>=12` or Clang `>=14`;
44
+
* GNU make (required for documentation).
45
+
* Bazel `>=8.2.1` (recommended using Bazelisk for installation).
46
+
* Python `>=3.6` with additional modules:
47
+
*`conan` (should be installed with `--break-system-packages` flag);
48
+
*`sphinx` and `sphinx-rtd-theme` (required for documentation).
62
49
63
-
After installing dependencies run these commands in the terminal:
50
+
After installing dependencies build the project by executing these commands:
bazel build //src/... --config=linux-opt # Build the project.
57
+
ln -s bazel-bin/src/Assembler/hcasm hcasm # Make symlink to hcasm.
58
+
ln -s bazel-bin/src/Emulator hcemul # Make symlink to hcemul.
71
59
```
72
60
73
-
The compiled binaries should be located in `bazel-out` directory, and the generated documentation should be located in `docs/_build/html` directory. After building the project open `index.html` file and start reading the documentation.
61
+
Building documentation should not be hard too:
74
62
75
-
To run the resulting binaries without searching for them in `bazel-out`, use `bazel run`.
76
63
```
77
-
bazel run //src/Assembler:hcasm -- <args>
78
-
bazel run //src/Emulator:hcemul -- <args>
64
+
cd docs
65
+
make html
79
66
```
80
67
81
-
Check out [examples](examples) folder for interesting code examples that will help you better understand the syntax of hASM and the power of HyperCPU.
68
+
After building documentation open `docs/_build/html/index.html`and start reading.
82
69
83
70
### Usage
84
71
72
+
Check out [examples](examples) folder for interesting code examples that will help you better understand the syntax of hASM and the power of HyperCPU.
*`-v VAR` — specify verbosity level (`debug`, `info`, `warning`, `error`). Default value is `warning`.
108
-
*`-m`, `--memory` — specify max. memory amount to be used. Postfixes are supported. Default value is `8K`.
97
+
*`-m` (`--memory`) `VAR` — specify max. memory amount to be used. Postfixes are supported. Default value is `8K`.
109
98
110
99
### Contributing
111
100
112
-
We will be happy to hear any feedback from you. Do not hesitate to report bugs or suggest any ideas using "Issues" page.
113
-
114
-
Want to contribute to the project? Read [CONTRIBUTION.md](CONTRIBUTION.md) firstly.
115
-
116
-
Thank you for your interest in HyperCPU.
101
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for contributing guidelines.
117
102
118
103
### Authors
119
104
120
-
***[HyperWin](https://github.com/HyperWinX) (2024 - present time)** — HyperCPU Project founder, lead developer and documentation author.
121
-
***[Ivan Movchan](https://github.com/ivan-movchan) (2025 - present time)** — beta tester, artist and just a contributor.
122
-
***[AshFungor](https://github.com/AshFungor) (2025 - present time)** — good contributor:)
105
+
HyperCPU is brought to you by these wonderful people:
123
106
124
-
### License
125
-
126
-
HyperCPU 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.
107
+
***[HyperWin](https://github.com/HyperWinX)** — project founder, lead developer and documentation author.
108
+
***[Ivan Movchan](https://github.com/ivan-movchan)** — project artist, tester, code examples author and just a contributor.
109
+
***[AshFungor](https://github.com/AshFungor)** — just a good contributor :)
127
110
128
-
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.
111
+
### License
129
112
130
-
You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
113
+
HyperCPU is free software released under the terms of the [GNU General Public License v3.0](LICENSE).
0 commit comments