Copyright (c) 2021 Monaco F. J. monaco@usp.br
SYSeg is free software and can be distributed under the terms of GNU General Public License version 3 of the license or, at your discretion, any later version. See section Licensing bellow for further information.
SYSeg (System Software, e.g.) is a collection of source-code examples and programming exercises intended to illustrate general concepts and techniques related to system software design and implementation.
SYSeg has been compiled from class notes in undergraduate courses in Computer Science and Engineering, and is meant to be useful for students and instructors interested in low-level programming.
The collection addresses concepts such as application binary interface (ABI), runtime system, program build chain, operating systems and related subjects, with source-code examples illustrating the implementation of shared libraries, dynamic linking, address relocation, position-independent code, POSIX API, file systems, build automation, among other topics.
SYSeg official repository is at https https://gitlab.com/monaco/syseg.
Currently, the material is focused on the x86 platform.
Before you dig into the contents, read this.
Most code examples and programming exercises require auxiliary artifacts (including the documentation!) which must be built beforehand.
In order to get those items built you must perform the setup procedure.
Please, read doc/syseg.md
and proceed as explained.
There you will also find instructions on how to use SYSeg code examples, as well as the requirements and dependencies your system needs to meet in order to build and execute SYSeg tools.
IMPORTANT
In case you have rushed through this file and has not been convinced to read the essential documentation, this is an encouragement note:
please, do read doc/syseg.md
It'll assuredly save you time.
This file is named README
for a reason.
SYSeg contents.
- Directory
eg
contains the main source code examples. - Directory
try
contains suggested programming exercises. - Directory
tools
contains auxiliary tools used by examples and exercises. - Directory
doc
contains SYSeg documentation. - Directory
extra
contains side notes, arcane features and hacker lore. - Directory
draft
contains work-in-progress material (likely buggy)
Each subdirectory contains a README
file further explaining its contents.
Should you like to contribute code, please, refer to the file
CONTRIBUTING.md
.
Bug reports and suggestions are always welcome.
Feel free to open and issue at the version-control repository.
The file AUTHORS
lists all contributors and acknowledgments, with
respective contact information.
SYSeg is a work in progress and, as such, may contain suboptimal code and potential technical innacuracies resulting of reliance on imprecise or misleading references. If you ever detect one such problem, it would be great if you could drop the author a note.
If it is not much trouble, please open an issue at the repository and apply it the lable 'matter'. There, explain what should be improved (well, if you are in the mood of submitting a PR/MR, that would be great!)
SYSeg (system-software, exempli gratia) Copyright (c) 2021 Monaco F. J. monaco@usp.br.
SYSeg is free software and can be distributed under the terms of GNU General Public License version 3 of the license or, at your discretion, any later version. Third-party source files distributed along with SYSeg are covered by their respective licenses, as annotated in each individual file.
See the terms of each license under the directory LICENSES
.