{"id":31772943,"url":"https://github.com/herenturker/easm","last_synced_at":"2026-05-06T10:38:25.453Z","repository":{"id":318691016,"uuid":"1032744005","full_name":"herenturker/easm","owner":"herenturker","description":"EASM is an educational 2-pass assembler project targeting x86 systems, primarily supporting 16-bit assembly instructions. It serves as a learning tool to understand assembler design, symbol tables, and machine code generation.","archived":false,"fork":false,"pushed_at":"2025-10-08T15:59:58.000Z","size":108,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-08T17:57:56.766Z","etag":null,"topics":["asm","assembler","c","cpp","educational-project","open-source","x86"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/herenturker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-05T18:57:21.000Z","updated_at":"2025-10-08T16:00:01.000Z","dependencies_parsed_at":"2025-10-08T17:57:59.533Z","dependency_job_id":"a29b6d5a-f727-4a40-b114-3a034da5eb02","html_url":"https://github.com/herenturker/easm","commit_stats":null,"previous_names":["herenturker/easm"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/herenturker/easm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/herenturker%2Feasm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/herenturker%2Feasm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/herenturker%2Feasm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/herenturker%2Feasm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/herenturker","download_url":"https://codeload.github.com/herenturker/easm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/herenturker%2Feasm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32689497,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T08:33:17.875Z","status":"ssl_error","status_checked_at":"2026-05-06T08:33:17.221Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["asm","assembler","c","cpp","educational-project","open-source","x86"],"created_at":"2025-10-10T04:18:36.144Z","updated_at":"2026-05-06T10:38:25.434Z","avatar_url":"https://github.com/herenturker.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EASM — Eren's Educational 2-Pass Assembler\n\n**EASM** is an educational project that demonstrates the inner workings of a simple **two-pass assembler**.  \nIt’s designed to help students and hobbyists learn about assembler structure, symbol resolution, and code generation using the GNU toolchain.\n\n\u003e ⚠️ Note: This project is educational and work in progress.\n\n---\n\n## 📘 Overview\n\nAn assembler translates human-readable assembly language into machine code.  \nA *two-pass assembler* first scans the source to collect symbols and labels, then generates final machine code in the second pass.\n\nEASM is **not intended as a production assembler**, but as an educational resource for understanding:\n\n- How instruction parsing and tokenization work\n- How symbol tables and relocations are handled\n- How code is emitted after symbol resolution\n\n---\n\n## 🧠 Features\n\n- Two-pass parsing and symbol table management\n- Basic instruction and directive recognition\n- Minimal, clear code aimed at readability and learning\n- Written in C/C++ using the GNU toolchain (`gcc`, `g++`)\n- Cross-platform build system using `make`\n- Compatible with Windows (MSYS2 / MinGW) and Linux\n\n---\n\n## ⚙️ Building the Project\n\nClone the repository and build using GNU Make:\n\n```bash\ngit clone https://github.com/herenturker/easm.git\ncd easm\nmake\n```\n\nThis command will compile all source files and produce the executable:\n\n```bash\neasm.exe    # On Windows\n./easm      # On Linux\n```\n\n## Requirements\n\nYou will need:\n\n- GCC (C and C++ compilers)\n- GNU Make\n- Optionally MSYS2 or MinGW if you are on Windows\n\nTo verify installation:\n```bash\ngcc --version\ng++ --version\nmake --version\n```\n\n\nBy default, EASM reads the input assembly file and performs two passes:\n\n1. Pass 1: Scans for labels, directives, and builds the symbol table\n2. Pass 2: Resolves symbols and emits the final binary output\n\n\n## Runtime Dependencies\n\nWhen compiled with GCC, the generated binary may depend on these runtime libraries:\n\n| DLL                | Source                   | License                 | AGPL Compatibility \n|--------------------|--------------------------|-------------------------|-----|\n| libgcc_s_seh-1.dll | GCC runtime              | GPL + linking exception | Yes |\n| libstdc++-6.dll    | GNU C++ standard library | GPL + linking exception | Yes |\n| KERNEL32.dll       | Windows API              | System component        | Yes |\n| msvcrt.dll         | Microsoft C runtime      | System component        | Yes |\n\nThese are standard system or compiler-provided libraries.\nThey are not distributed with this repository and are automatically available on typical systems.\n\n## Usage\nAfter compiling codes, you can run:\n```bash\n./easm examples/hello.asm\n```\n\nThank you for reading.\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fherenturker%2Feasm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fherenturker%2Feasm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fherenturker%2Feasm/lists"}