{"id":16533744,"url":"https://github.com/niwakadev/jit_x86_emulator","last_synced_at":"2025-09-22T01:31:24.015Z","repository":{"id":158792990,"uuid":"438577356","full_name":"NiwakaDev/JIT_X86_EMULATOR","owner":"NiwakaDev","description":"jit x86 emulator","archived":false,"fork":false,"pushed_at":"2022-01-02T01:00:08.000Z","size":85,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-29T23:37:47.809Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NiwakaDev.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}},"created_at":"2021-12-15T09:53:01.000Z","updated_at":"2022-10-16T01:43:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"f0207376-3e21-45b7-9902-736394fc79a4","html_url":"https://github.com/NiwakaDev/JIT_X86_EMULATOR","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/NiwakaDev/JIT_X86_EMULATOR","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NiwakaDev%2FJIT_X86_EMULATOR","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NiwakaDev%2FJIT_X86_EMULATOR/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NiwakaDev%2FJIT_X86_EMULATOR/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NiwakaDev%2FJIT_X86_EMULATOR/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NiwakaDev","download_url":"https://codeload.github.com/NiwakaDev/JIT_X86_EMULATOR/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NiwakaDev%2FJIT_X86_EMULATOR/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276333806,"owners_count":25624044,"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","status":"online","status_checked_at":"2025-09-21T02:00:07.055Z","response_time":72,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":"2024-10-11T18:15:43.249Z","updated_at":"2025-09-22T01:31:24.005Z","avatar_url":"https://github.com/NiwakaDev.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JIT_X86_EMULATOR\nこれはにわかなjit化されたx86エミュレータです。\n\n![select](https://github.com/NiwakaDev/NIWAKA_JIT_X86/blob/main/images/select.png)\n\n\n上の画像のプログラム:\n```\nBITS 32\n    org 0x7c00\nstart:\n    mov edx, 0x03f8\nmainloop:\n    mov al, '\u003e'    ; プロンプトを表示\n    out dx, al\ninput:\n    in al, dx       ; 1文字入力\n    cmp al, 'h'\n    je puthello     ; hならhelloを表示\n    cmp al, 'w'\n    je putworld     ; wならworldを表示\n    cmp al, 'q'\n    je fin          ; qなら終了\n    jmp input       ; それ以外なら再入力\nputhello:\n    mov esi, msghello\n    call puts\n    jmp mainloop\nputworld:\n    mov esi, msgworld\n    call puts\n    jmp mainloop\nfin:\n    jmp 0\n\n; esiに設定された文字列を表示するサブルーチン\nputs:\n    mov al, [esi]\n    inc esi\n    cmp al, 0\n    je putsend\n    out dx, al\n    jmp puts\nputsend:\n    ret\n\nmsghello:\n    db \"hello\", 0x0d, 0x0a, 0\nmsgworld:\n    db \"world\", 0x0d, 0x0a, 0\n\n```\n\n\n4.2章の以下のコードが動きます。(subroutine32.bin)\n\n```\nBITS 32\n    org 0x7c00\nstart:            ; プログラムの開始\n    mov esi, msg\n    call puts     ; サブルーチンを呼び出す\n    jmp 0\n\nputs:\n    mov al, [esi]  ; 1文字読み込む\n    inc esi\n    cmp al, 0     ; 文字列の末尾\n    je  puts_end  ; に来たら終了\n    mov ah, 0x0e\n    mov ebx, 15\n    int 0x10      ; BIOS を呼び出す\n    jmp puts\nputs_end:\n    ret           ; サブルーチンから抜ける\n\nmsg:\n    db \"hello, world\", 0x0d, 0x0a, 0\n```\n\n \n \u003ch2\u003eビルド\u003c/h2\u003e\n\n```\nmake\n```\n\n\u003ch2\u003e実行\u003c/h2\u003e\n\n```\n./x86 subroutine32.bin\n```\n\nor\n\n```\n./x86 select.bin\n```\n\n \u003ch2\u003eサンプルプログラム\u003c/h2\u003e\n  \u003ca href=\"https://www.amazon.co.jp/%E8%87%AA%E4%BD%9C%E3%82%A8%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%A7%E5%AD%A6%E3%81%B6x86%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3-%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%8C%E5%8B%95%E3%81%8F%E4%BB%95%E7%B5%84%E3%81%BF%E3%82%92%E5%BE%B9%E5%BA%95%E7%90%86%E8%A7%A3-%E5%86%85%E7%94%B0%E5%85%AC%E5%A4%AA/dp/4839954747/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A\u0026keywords=%E8%87%AA%E4%BD%9C%E3%82%A8%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%BF\u0026qid=1638354148\u0026s=books\u0026sr=1-1\"\u003e自作エミュレータで学ぶx86アーキテクチャ-コンピュータが動く仕組みを徹底理解! \n 内田公太 、 上川大介\u003c/a\u003eからです。\n\n \u003ch2\u003ejitライブラリ\u003c/h2\u003e\n https://github.com/herumi/xbyak\n\n \u003ch2\u003e問題点\u003c/h2\u003e\n 呼び出し規約の関係で、Windowsでは動作しません。\n あと、このJITエミュレータは、\n １つの機械語命令をコンパイルするたびに、制御を本体に移しています。\n つまり、めちゃくちゃ遅いです。これに関しては、今後改良する予定です。\n 何故こんなことしたのかと言いますと、動かし切ることをまずは目指したからです。\n\n \u003ch2\u003ejit x86 emulatorの作成の参考になった記事\u003c/h2\u003e\n https://jahej.com/alt/2011_06_12_jit-cpu-emulation-a-6502-to-x86-dynamic-recompiler-part-1.html","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniwakadev%2Fjit_x86_emulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fniwakadev%2Fjit_x86_emulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniwakadev%2Fjit_x86_emulator/lists"}