{"id":38831785,"url":"https://github.com/alexandermaxranabel/cemb","last_synced_at":"2026-01-17T13:53:02.608Z","repository":{"id":190357742,"uuid":"682454983","full_name":"AlexanderMaxRanabel/cemb","owner":"AlexanderMaxRanabel","description":"cemb is a small virtual machine that runs CASM(cemb Assembly)","archived":false,"fork":false,"pushed_at":"2024-02-18T07:20:53.000Z","size":54,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-02-18T20:25:10.185Z","etag":null,"topics":["assembly","jvm","programming-language","rust","virtual-machine"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AlexanderMaxRanabel.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}},"created_at":"2023-08-24T07:52:01.000Z","updated_at":"2023-12-03T22:54:32.000Z","dependencies_parsed_at":"2023-08-24T09:22:27.481Z","dependency_job_id":"a8a42a85-c645-42b1-8c56-a95495e485fd","html_url":"https://github.com/AlexanderMaxRanabel/cemb","commit_stats":{"total_commits":48,"total_committers":3,"mean_commits":16.0,"dds":"0.39583333333333337","last_synced_commit":"9c2bf32a2e83efeae8f353fae576ae4bcefa3803"},"previous_names":["alexandermaxranabel/cemb"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/AlexanderMaxRanabel/cemb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexanderMaxRanabel%2Fcemb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexanderMaxRanabel%2Fcemb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexanderMaxRanabel%2Fcemb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexanderMaxRanabel%2Fcemb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlexanderMaxRanabel","download_url":"https://codeload.github.com/AlexanderMaxRanabel/cemb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexanderMaxRanabel%2Fcemb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28509371,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T13:38:16.342Z","status":"ssl_error","status_checked_at":"2026-01-17T13:37:44.060Z","response_time":85,"last_error":"SSL_read: 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":["assembly","jvm","programming-language","rust","virtual-machine"],"created_at":"2026-01-17T13:53:02.501Z","updated_at":"2026-01-17T13:53:02.595Z","avatar_url":"https://github.com/AlexanderMaxRanabel.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cemb\n## cemb is a small virtual machine that runs cASM(cemb Assembly). WARNING cemb project is still under development.\n\n### What is CASM?\ncASM Stands for cemb assembly. Its a small programming/scripting language that you work directly with stack for memory management\ndue to design of cemb. Each file is their own function.\n\n## Examples:\n### WARNING Documentation is still WIP.\n```\nprintline 'cemb is awesome!'\n```\nThis example prints \"cemb is awesome!\".\n```\nprintline cemb.stack\n```\nThis example prints entire cemb variable stack.\n```\nprintline cemb.fromstack 0\n```\n### Variables\ncASM uses a 0 based indexing like many programming languages.\nThis example prints element 0 (which is first) from Memory stack.\n```\nlet str :: String = 'Hello World'\n```\nLet break this statement down:\n- ```let```\u003c- This is variable declaration keyword. In cemb every variable is immutable unless they are removed from Memory Stack.\n- ```str``` \u003c- This is Variable name.\n- ```::``` \u003c- Type Indicator.\n- ```String``` \u003c- This is the Type. \n- ```=``` \u003c- -_-.\n- ```'Hello World'``` \u003c- This the Value.\n\nin cASM once a variable is declared, it will be immediately pushed to stack.\nBy default every variable is immutable.\nThere is 4 Possible types in cASM:\n1. String: A String is an array of characters.\n2. Float: A 64-Bit floating point value.\n3. Int: A 64-Bit whole value integer.\n4. Char: A singular character.\n\nLets look at examples that uses each type:\n```\nlet string :: String = 'The Answer to everything'\nlet float :: Float = 4.2\nlet integer :: Int = 42\nlet char :: Char = 'C'\n```\n#### Memory Management\nIn cASM, variables as we discussed previously are immediately pushed to the stack once they are declare. \nThere is no auto-memory management in cASM. \nWe have two main methods for memory management in cASM but we need to understand the basics of the variable references in cemb.\nIn cASM the variable name does not mean much. The most of the variable operations in cASM are done with the address of the variable in the stack.\nExamples to make you understand it better.\n```\nlet integer :: Int = 42\nprintline cemb.stack 0\n// There is one variable in the stack. The Indexing is 0 based in cASM\n```\nNow we can learn the methods for memory management:\n- ```dealloc_full_stack```\nThis resets the whole stack to 0. No variables will remain after this\n- ```dealloc_certain_element 0```\nThis deallocates the variable that is in index 0 at stack.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexandermaxranabel%2Fcemb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexandermaxranabel%2Fcemb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexandermaxranabel%2Fcemb/lists"}