{"id":20332482,"url":"https://github.com/permutationlock/assembly_course","last_synced_at":"2025-07-11T17:42:50.733Z","repository":{"id":95722002,"uuid":"556654907","full_name":"permutationlock/assembly_course","owner":"permutationlock","description":"An introduction to computer architecture, assembly language, and developing applications in C","archived":false,"fork":false,"pushed_at":"2024-02-08T01:46:28.000Z","size":6,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-14T15:42:00.815Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/permutationlock.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-24T08:59:28.000Z","updated_at":"2022-10-24T08:59:52.000Z","dependencies_parsed_at":"2024-11-14T20:39:00.938Z","dependency_job_id":null,"html_url":"https://github.com/permutationlock/assembly_course","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/permutationlock%2Fassembly_course","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/permutationlock%2Fassembly_course/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/permutationlock%2Fassembly_course/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/permutationlock%2Fassembly_course/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/permutationlock","download_url":"https://codeload.github.com/permutationlock/assembly_course/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241851781,"owners_count":20030965,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T20:26:51.569Z","updated_at":"2025-03-04T12:42:36.811Z","avatar_url":"https://github.com/permutationlock.png","language":"C","readme":"# Understanding computer applications: a simple ground-up guide\n\nIn this project I compile a collection of thoughts and examples\ncovering how to build computer applications from the ground up.\nSpecifically, the project discusses x86\\_64 assembly\nlanguage, C, and the Linux operating system.\nIt covers how to create computer applications to run on modern\nsystems using only the operating system kernel interface.\n\nThrougohut the book we will build from scratch\n\n - a custom C \"standard\" library indpendent of libc[^1];\n - a set of command line utilities including a simple shell;\n - a frame buffer rendered terminal emulator;\n - a debugger and corresponding frame buffer GUI;\n - a frame buffer compositor and tiling window manager;\n - an online multiplayer videogame.\n\nIn this way we will build a custom Linux based operating system from the ground\nup. Then we will show a simple way to adapt our graphical applications to target\nmore common Linux window managers (X, Wayland). We'll also add an option for our\nlibrary to use a\nlinked libc instead of our custom x86\\_64 syscall version, thus making it just\nas cross platform as libc. Some Windows APIs will be covered as well so our GUI\ncan draw to the framebuffer of a window in Windows as well.\n\n[^1]: I call it a standard library for lack of a better term: it provides some\n    of the functionality of the C standard library while specifically choosing\n    to not follow the C standard.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpermutationlock%2Fassembly_course","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpermutationlock%2Fassembly_course","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpermutationlock%2Fassembly_course/lists"}