{"id":30779179,"url":"https://github.com/lostjared/mxvm","last_synced_at":"2026-04-05T21:16:00.318Z","repository":{"id":305353878,"uuid":"1022664689","full_name":"lostjared/MXVM","owner":"lostjared","description":"MXVM is a custom virtual machine and compiler/interpreter project designed as a personal learning tool.","archived":false,"fork":false,"pushed_at":"2026-04-04T03:10:45.000Z","size":9986,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-04T03:28:20.907Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://lostsidedead.biz/MXVM","language":"C++","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/lostjared.png","metadata":{"files":{"readme":"README.html","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-07-19T15:04:17.000Z","updated_at":"2026-04-04T03:10:49.000Z","dependencies_parsed_at":"2025-07-19T19:11:23.242Z","dependency_job_id":"70e2d4ca-648f-4e03-8297-be7346985255","html_url":"https://github.com/lostjared/MXVM","commit_stats":null,"previous_names":["lostjared/mxvm"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/lostjared/MXVM","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lostjared%2FMXVM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lostjared%2FMXVM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lostjared%2FMXVM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lostjared%2FMXVM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lostjared","download_url":"https://codeload.github.com/lostjared/MXVM/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lostjared%2FMXVM/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31450229,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T15:22:31.103Z","status":"ssl_error","status_checked_at":"2026-04-05T15:22:00.205Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":[],"created_at":"2025-09-05T06:06:56.875Z","updated_at":"2026-04-05T21:16:00.261Z","avatar_url":"https://github.com/lostjared.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n  \u003cmeta charset=\"UTF-8\"\u003e\n  \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\"\u003e\n  \u003cmeta name=\"description\" content=\"MXVM: Custom RISC-style virtual machine and compiler sandbox in C++. Explore VM architecture, AST parsing, and code generation.\"\u003e\n  \u003cmeta name=\"keywords\" content=\"MXVM, virtual machine, RISC, compiler, interpreter, bytecode, C++\"\u003e\n  \u003ctitle\u003eMXVM - Virtual Machine \u0026 Compiler\u003c/title\u003e\n  \u003cstyle\u003e\n    body { background-color: #000; color: #fff; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; margin: 0; padding: 0; line-height: 1.6; }\n    main { max-width: 900px; margin: 40px auto; padding: 0 20px; }\n    header { text-align: center; padding: 60px 20px 20px; }\n    header h1 { font-size: 3rem; margin: 0; }\n    header p { font-size: 1.2rem; color: #ccc; margin-top: 8px; }\n    section { margin-bottom: 40px; }\n    h2 { border-bottom: 2px solid #444; padding-bottom: 0.2em; margin-bottom: 0.5em; font-size: 1.8rem; }\n    h3 { font-size: 1.4rem; margin-top: 1em; margin-bottom: 0.5em; }\n    p, ul, pre, code, table, ol { margin-bottom: 1em; }\n    code, pre { background-color: #111; color: #0f0; padding: 4px 6px; border-radius: 4px; font-family: 'Courier New', Courier, monospace; }\n    pre { overflow-x: auto; padding: 10px; }\n    table { width: 100%; border-collapse: collapse; }\n    th, td { border: 1px solid #444; padding: 8px 12px; text-align: left; }\n    th { background-color: #222; }\n    ul, ol { padding-left: 1.2em; }\n    footer { text-align: center; padding: 20px; border-top: 1px solid #444; color: #666; font-size: 0.9rem; margin-top: 40px; }\n    a { color: #fff; text-decoration: underline; }\n    a:hover { color: #ccc; }\n  \u003c/style\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n  \u003cheader\u003e\n    \u003ch1\u003eMXVM\u003c/h1\u003e\n    \u003cp\u003eCustom RISC-style VM \u0026 Compiler Sandbox (C++)\u003c/p\u003e\n  \u003c/header\u003e\n  \u003cmain\u003e\n    \u003csection\u003e\n      \u003ch2\u003eProject Purpose\u003c/h2\u003e\n      \u003cp\u003e\u003cstrong\u003eNot for production use.\u003c/strong\u003e Use MXVM to explore:\u003c/p\u003e\n      \u003cul\u003e\n        \u003cli\u003eVM architecture \u0026amp; instruction execution\u003c/li\u003e\n        \u003cli\u003eCode parsing \u0026amp; AST generation\u003c/li\u003e\n        \u003cli\u003eModular design \u0026amp; dynamic loading\u003c/li\u003e\n        \u003cli\u003eC++ code organization \u0026amp; CMake\u003c/li\u003e\n        \u003cli\u003eCross-platform builds\u003c/li\u003e\n        \u003cli\u003eDebugging \u0026amp; memory management\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/section\u003e\n    \u003csection\u003e\n      \u003ch2\u003eFeatures\u003c/h2\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003cstrong\u003eCustom VM:\u003c/strong\u003e Small instruction set (arithmetic, control flow, memory, string).\u003c/li\u003e\n        \u003cli\u003e\u003cstrong\u003eParser \u0026amp; AST:\u003c/strong\u003e Grammar → AST → intermediate code.\u003c/li\u003e\n        \u003cli\u003e\u003cstrong\u003eInterpreter \u0026amp; JIT:\u003c/strong\u003e Stack VM or native x86_64 code.\u003c/li\u003e\n        \u003cli\u003e\u003cstrong\u003eModular System:\u003c/strong\u003e Load IO, string, math modules via \u003ccode\u003einvoke\u003c/code\u003e.\u003c/li\u003e\n        \u003cli\u003e\u003cstrong\u003eDebugging:\u003c/strong\u003e HTML output, memory dumps, verbose errors.\u003c/li\u003e\n        \u003cli\u003e\u003cstrong\u003eCMake Build:\u003c/strong\u003e Linux, macOS \u0026amp; Windows support.\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/section\u003e\n    \u003csection\u003e\n      \u003ch2\u003eRISC-Style Bytecode\u003c/h2\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003cstrong\u003eLoad/Store Architecture:\u003c/strong\u003e \u003ccode\u003eload\u003c/code\u003e / \u003ccode\u003estore\u003c/code\u003e only for memory access.\u003c/li\u003e\n        \u003cli\u003e\u003cstrong\u003eOrthogonal Instructions:\u003c/strong\u003e Single-purpose opcodes (e.g., \u003ccode\u003eadd\u003c/code\u003e, \u003ccode\u003ejmp\u003c/code\u003e).\u003c/li\u003e\n        \u003cli\u003e\u003cstrong\u003eFixed Format:\u003c/strong\u003e One instruction per line; destination operand first.\u003c/li\u003e\n        \u003cli\u003e\u003cstrong\u003eExplicit Control Flow:\u003c/strong\u003e \u003ccode\u003ecmp\u003c/code\u003e sets flags; branches via \u003ccode\u003eje\u003c/code\u003e, \u003ccode\u003ejne\u003c/code\u003e, etc.\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/section\u003e\n    \u003csection\u003e\n      \u003ch2\u003eLanguage Overview\u003c/h2\u003e\n      \u003cpre\u003e\u003ccode\u003eprogram MyApp {\n  section data {\n    int counter = 0\n    string msg = \"Hello, MXVM!\\n\"\n  }\n  section module { io, string }\n  section code {\n  start:\n    print msg\n    add counter, counter, 1\n    cmp counter, 10\n    jl start\n    done\n  }\n}\u003c/code\u003e\u003c/pre\u003e\n      \u003cp\u003e\u003cstrong\u003edata:\u003c/strong\u003e Declare \u003ccode\u003eint\u003c/code\u003e, \u003ccode\u003eptr\u003c/code\u003e, \u003ccode\u003ebyte\u003c/code\u003e, \u003ccode\u003estring\u003c/code\u003e.\u003c/p\u003e\n      \u003cp\u003e\u003cstrong\u003emodule:\u003c/strong\u003e List modules for \u003ccode\u003einvoke\u003c/code\u003e.\u003c/p\u003e\n      \u003cp\u003e\u003cstrong\u003ecode:\u003c/strong\u003e Labeled, one instruction per line; operands: destination first.\u003c/p\u003e\n    \u003c/section\u003e\n    \u003csection\u003e\n      \u003ch2\u003eInstruction Set Reference\u003c/h2\u003e\n      \u003ch3\u003eArithmetic \u0026amp; Logic\u003c/h3\u003e\n      \u003ctable\u003e\n        \u003cthead\u003e\u003ctr\u003e\u003cth\u003eInstruction\u003c/th\u003e\u003cth\u003eOperands\u003c/th\u003e\u003cth\u003eDescription\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\u003ctd\u003emov\u003c/td\u003e\u003ctd\u003edest, src\u003c/td\u003e\u003ctd\u003eCopy value\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003eadd\u003c/td\u003e\u003ctd\u003edest, a, b\u003c/td\u003e\u003ctd\u003edest = a + b\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003esub\u003c/td\u003e\u003ctd\u003edest, a, b\u003c/td\u003e\u003ctd\u003edest = a - b\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003emul\u003c/td\u003e\u003ctd\u003edest, a, b\u003c/td\u003e\u003ctd\u003edest = a * b\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003ediv\u003c/td\u003e\u003ctd\u003edest, a, b\u003c/td\u003e\u003ctd\u003edest = a / b\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003emod\u003c/td\u003e\u003ctd\u003edest, a, b\u003c/td\u003e\u003ctd\u003edest = a % b\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003eneg\u003c/td\u003e\u003ctd\u003edest, a\u003c/td\u003e\u003ctd\u003edest = -a\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003eor\u003c/td\u003e\u003ctd\u003edest, a, b\u003c/td\u003e\u003ctd\u003eBitwise OR\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003eand\u003c/td\u003e\u003ctd\u003edest, a, b\u003c/td\u003e\u003ctd\u003eBitwise AND\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003exor\u003c/td\u003e\u003ctd\u003edest, a, b\u003c/td\u003e\u003ctd\u003eBitwise XOR\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003enot\u003c/td\u003e\u003ctd\u003edest, a\u003c/td\u003e\u003ctd\u003eBitwise NOT\u003c/td\u003e\u003c/tr\u003e\n        \u003c/tbody\u003e\n      \u003c/table\u003e\n      \u003ch3\u003eComparison \u0026amp; Branching\u003c/h3\u003e\n      \u003ctable\u003e\n        \u003cthead\u003e\u003ctr\u003e\u003cth\u003eInstruction\u003c/th\u003e\u003cth\u003eOperands\u003c/th\u003e\u003cth\u003eDescription\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\u003ctd\u003ecmp\u003c/td\u003e\u003ctd\u003ea, b\u003c/td\u003e\u003ctd\u003eSet flags from a - b\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003ejmp\u003c/td\u003e\u003ctd\u003elabel\u003c/td\u003e\u003ctd\u003eUnconditional jump\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003eje/jne/jl/jle/jg/jge\u003c/td\u003e\u003ctd\u003elabel\u003c/td\u003e\u003ctd\u003eConditional jumps\u003c/td\u003e\u003c/tr\u003e\n        \u003c/tbody\u003e\n      \u003c/table\u003e\n      \u003ch3\u003eMemory \u0026amp; Stack\u003c/h3\u003e\n      \u003ctable\u003e\n        \u003cthead\u003e\u003ctr\u003e\u003cth\u003eInstruction\u003c/th\u003e\u003cth\u003eOperands\u003c/th\u003e\u003cth\u003eDescription\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\u003ctd\u003eload\u003c/td\u003e\u003ctd\u003edest, ptr, idx, size\u003c/td\u003e\u003ctd\u003edest = *(ptr + idx*size)\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003estore\u003c/td\u003e\u003ctd\u003esrc, ptr, idx, size\u003c/td\u003e\u003ctd\u003e*(ptr + idx*size) = src\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003ealloc\u003c/td\u003e\u003ctd\u003eptr, bsize, count\u003c/td\u003e\u003ctd\u003eAllocate memory\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003efree\u003c/td\u003e\u003ctd\u003eptr\u003c/td\u003e\u003ctd\u003eRelease memory\u003c/td\u003e\u003c/tr\u003e\n        \u003c/tbody\u003e\n      \u003c/table\u003e\n    \u003c/section\u003e\n    \u003csection\u003e\n      \u003ch2\u003eI/O \u0026amp; Modules\u003c/h2\u003e\n      \u003ctable\u003e\n        \u003cthead\u003e\u003ctr\u003e\u003cth\u003eInstruction\u003c/th\u003e\u003cth\u003eOperands\u003c/th\u003e\u003cth\u003eDescription\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\u003ctd\u003eprint\u003c/td\u003e\u003ctd\u003efmt, args…\u003c/td\u003e\u003ctd\u003eFormatted output\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003egetline\u003c/td\u003e\u003ctd\u003eptr\u003c/td\u003e\u003ctd\u003eRead line into buffer\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003einvoke\u003c/td\u003e\u003ctd\u003efunc, args…\u003c/td\u003e\u003ctd\u003eCall external function\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003ecall\u003c/td\u003e\u003ctd\u003eModule.Func\u003c/td\u003e\u003ctd\u003eInternal function call\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003eret\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003ctd\u003eReturn from function\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003edone\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003ctd\u003eEnd program\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003eexit\u003c/td\u003e\u003ctd\u003ecode\u003c/td\u003e\u003ctd\u003eTerminate VM\u003c/td\u003e\u003c/tr\u003e\n        \u003c/tbody\u003e\n      \u003c/table\u003e\n    \u003c/section\u003e\n    \u003csection\u003e\n      \u003ch2\u003eConversion \u0026 Misc\u003c/h2\u003e\n      \u003ctable\u003e\n        \u003cthead\u003e\u003ctr\u003e\u003cth\u003eInstruction\u003c/th\u003e\u003cth\u003eOperands\u003c/th\u003e\u003cth\u003eDescription\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\u003ctd\u003eto_int\u003c/td\u003e\u003ctd\u003edest, ptr\u003c/td\u003e\u003ctd\u003eConvert string to integer\u003c/td\u003e\u003c/tr\u003e\n          \u003ctr\u003e\u003ctd\u003eto_float\u003c/td\u003e\u003ctd\u003edest, ptr\u003c/td\u003e\u003ctd\u003eConvert string to float\u003c/td\u003e\u003c/tr\u003e\n        \u003c/tbody\u003e\n      \u003c/table\u003e\n    \u003c/section\u003e\n    \u003csection\u003e\n      \u003ch2\u003eModule System\u003c/h2\u003e\n      \u003cp\u003ePlace compiled modules (\u003ccode\u003e.so\u003c/code\u003e/\u003ccode\u003e.dll\u003c/code\u003e) into \u003ccode\u003emodules/\u003c/code\u003e. Then:\u003c/p\u003e\n      \u003cpre\u003e\u003ccode\u003esection module { io, string, math }\ninvoke fopen, filename, mode\ninvoke strlen, mystr\u003c/code\u003e\u003c/pre\u003e\n    \u003c/section\u003e\n    \u003csection\u003e\n      \u003ch2\u003eProject Structure\u003c/h2\u003e\n      \u003cpre\u003e\u003ccode\u003eMXVM-main/\n├── CMakeLists.txt   # Build rules\n├── LICENSE          # Apache-2.0 License\n├── README.md        # Project overview\n├── about.html       # Browser demo \u0026 docs\n├── include/mxvm/    # Public headers\n├── src/             # VM \u0026 codegen implementation\n├── modules/         # Extension modules\n└── mxvm_src/        # Example programs (.mxvm)\u003c/code\u003e\u003c/pre\u003e\n    \u003c/section\u003e\n    \u003csection\u003e\n      \u003ch2\u003eBuilding \u0026amp; Running\u003c/h2\u003e\n      \u003cpre\u003e\u003ccode\u003egit clone https://github.com/yourname/MXVM.git\ncd MXVM\nmkdir build \u0026\u0026 cd build\ncmake .. \u0026\u0026 make \u0026\u0026 sudo make install\n\u003c/code\u003e\u003c/pre\u003e\n      \u003cp\u003e\u003cstrong\u003eInterpreter:\u003c/strong\u003e \u003ccode\u003emxvmc hello_world.mxvm --path /usr/local/lib --object-path . \u003c/code\u003e\u003c/p\u003e\n      \u003cp\u003e\u003cstrong\u003eCompile:\u003c/strong\u003e \u003ccode\u003emxvmc fibonacci.mxvm --path /usr/local/lib --object-path . --action translate\u003c/code\u003e\u003c/p\u003e\n    \u003c/section\u003e\n    \u003csection\u003e\n      \u003ch2\u003eContributing\u003c/h2\u003e\n      \u003col\u003e\n        \u003cli\u003eFork the repository\u003c/li\u003e\n        \u003cli\u003eCreate a feature branch\u003c/li\u003e\n        \u003cli\u003eCommit \u0026amp; push changes\u003c/li\u003e\n        \u003cli\u003eOpen a Pull Request\u003c/li\u003e\n      \u003c/ol\u003e\n    \u003c/section\u003e\n    \u003csection\u003e\n    \u003c/section\u003e\n  \u003c/main\u003e\n  \u003cfooter\u003e© 2025 MXVM Project\u003c/footer\u003e\n\u003c/body\u003e\n\u003c/html\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flostjared%2Fmxvm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flostjared%2Fmxvm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flostjared%2Fmxvm/lists"}