{"id":114,"date":"2026-05-24T10:34:11","date_gmt":"2026-05-24T01:34:11","guid":{"rendered":"https:\/\/www.flattek.com\/?p=114"},"modified":"2026-05-27T16:00:02","modified_gmt":"2026-05-27T07:00:02","slug":"post-114","status":"publish","type":"post","link":"https:\/\/www.flattek.com\/index.php\/2026\/05\/24\/post-114\/","title":{"rendered":"OS\u3092\u4f5c\u3063\u3066\u307f\u3088\u3046"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">OS\u3068\u3044\u3046\u8a00\u8449\u306f\u77e5\u3063\u3066\u3044\u308b\u3060\u308d\u3046\u304b\u3002\u305d\u306eOS\u3092\u4eca\u56de\u306f\u4f5c\u3063\u3066\u307f\u3088\u3046\u3068\u3044\u3046\u4f01\u753b\u3067\u3042\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OS\u3092\u4f5c\u308b\u306b\u306f\u3001\u307e\u305a\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u3082\u306e\u304c\u5fc5\u8981\u3068\u306a\u308b\u3002<br>\u30d6\u30fc\u30c8\u30ed\u30fc\u30c0\u30fc<br>\u30ab\u30fc\u30cd\u30eb<br>\u30c9\u30e9\u30a4\u30d0<br>\u3053\u308c\u3089\u304c\u5fc5\u8981\u3068\u306a\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u307e\u305a\u306f\u7b2c\u4e00\u56de\u3068\u3044\u3046\u3053\u3068\u3067\u3001\u30d6\u30fc\u30c8\u30ed\u30fc\u30c0\u30fc\u3092\u4f5c\u3063\u3066\u307f\u305f\u3002<br>(\u6570\u30f6\u6708\u304b\u304b\u3063\u305f\u3002)<\/p>\n\n\n\n<pre class=\"wp-block-code has-theme-palette-4-background-color has-background has-small-font-size\"><code>default rel\nsection .data\n    ImageHandle dq 0    ;\u4f4f\u6240\u306e\u5f62\u5f0f\u306f64bit\u306a\u306e\u3067dq\u3092\u4f7f\u3044\u3001UTF-16\u306e\u6587\u5b57\u306e\u5834\u5408\u306f\u4e00\u6587\u5b57\u304c16bit\u306a\u306e\u3067dw\n    SystemTable dq 0\n        ConOut dq 0\n            OutputString dq 0\n        ConIn dq 0\n            ReadKey dq 0\n        RuntimeServices dq 0\n            shutdown dq 0\n        BootServices dq 0\n            uefiexit dq 0\n            getmemorymap dq 0\n            \n            HandleProtocol dq 0\n            AllocatePool dq 0\n            FreePool dq 0\n\n            ;getmemorymap\u306e\u8fd4\u308a\u5024\n\n            align 8 ;8\u30d0\u30a4\u30c8\u5883\u754c\u306b\u6574\u5217\u3002\n            mapsize dq 4096\n            memorymap times 4096 db 0   ;UEFI\u306e\u4ed5\u69d8\u4e0a\u3001getmemorymap\u306f\u3053\u306e\u3088\u3046\u306b\u3057\u3066\u30d0\u30c3\u30d5\u30a1\u3092\u7528\u610f\u3057\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308b\u3002\n            mapkey dq 0\n            DescriptorSize dq 0\n            DescriptorVersion dd 0\n\n        inputkey dq 0   ;\u6587\u5b57\u30c7\u30fc\u30bf\u81ea\u4f53\u306fdw\u3067\u3044\u3044\u306e\u3060\u304c\u3001readkey\u306f\u4ed6\u306e\u30c7\u30fc\u30bf\u30822byte\u5206\u66f8\u304d\u8fbc\u3080\u306e\u3067\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u5bfe\u7b56\u3067dd\u306b\u3001\u305d\u3057\u3066\u4fdd\u967a\u3068\u3057\u3066\u306e\u610f\u5473\u3082\u8fbc\u3081\u3066dq\u306b\u3002\n        tempkey dw 0\n    ;\u6587\u5b57\u5217\u306e\u5f8c\u308d\u306b\u306f0\u3092\u7d76\u5bfe\u3064\u3051\u308b(db\u9650\u5b9a)\u3002\u6539\u884c\u306f13,10\u3067\u7d42\u4e86\u306f0\u3002\n    msg dw __utf16__('Hello!'), 13,10, 0\n    bootmsg dw __utf16__('Do you want to boot?'), 13, 10, __utf16__('y\/n'), 13, 10, 0\n    Fatal_error_msg dw __utf16__('Fatal_error_detected:...Restart...'), 13, 10, 0\n    Reboot_Failure dw __utf16__('Restart_failed:...Force_stop...'), 13, 10, 0\n    Debug_msg dw __utf16__('Debug'), 13, 10, 0\n    register dw 0\nsection .text\n    global _start\n    _start:\n        ;\u6700\u521d\u306fUEFI\u304c\u3044\u304f\u3064\u304b\u306e\u30ec\u30b8\u30b9\u30bf\u306bUEFI\u547d\u4ee4\u306e\u30a2\u30c9\u30ec\u30b9\u304c\u5165\u3063\u3066\u3044\u308b(rcx=ImageHandle(\u81ea\u5206\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u8b58\u5225\u5b50)rdx=SystemTable(\u30b5\u30fc\u30d3\u30b9\u306e\u53c2\u7167\u304c\u5165\u3063\u3066\u3044\u308b))\n        \n        sub rsp, 40 ;\u30b9\u30bf\u30c3\u30af\u3092\u8abf\u6574\n        xor r15, r15\n\n        ;\u30ec\u30b8\u30b9\u30bf\u304b\u3089\u30e1\u30e2\u30ea\u3078\u4fdd\u5b58\n        mov &#91;ImageHandle], rcx\n        mov &#91;SystemTable], rdx\n\n        mov rcx, &#91;rdx + 64] ;SystemTable\u306e64byte\u5148\u306b\u306f\u753b\u9762\u51fa\u529b\u306eConOut\u306e\u4f4f\u6240\u304c\u5165\u3063\u3066\u3044\u308b\n        mov &#91;ConOut], rcx\n        mov rax, &#91;rcx + 8]  ;ConOut\u306e8byte\u5148\u306b\u6587\u5b57\u5217\u306eOutputString\u304c\u5165\u3063\u3066\u3044\u308b\n        mov &#91;OutputString], rax\n        lea rdx, &#91;msg]    ;rdx\u306b\u6587\u5b57\u5217\u306e\u30c7\u30fc\u30bf\u3092\u5165\u308c\u308b\n        \n        call rax    ;\u4eca\u56de\u306e\u5f15\u6570:rcx SystemTable\u306e\u4f4f\u6240(\u56fa\u5b9a) rdx \u6587\u5b57\u5217\u30c7\u30fc\u30bf\n\n        ;\u3053\u3053\u3067\u30d6\u30fc\u30c8\u3059\u308b\u304b\u3092\u805e\u304f\u6587\u3092\u8868\u793a\n\n        global judge_msg\n        judge_msg:\n\n        lea rdx, &#91;bootmsg]\n        mov rcx, &#91;ConOut]   ;rcx\u306fUEFI\u304c\u66f8\u304d\u63db\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u63ee\u767a\u6027\u30ec\u30b8\u30b9\u30bf\u6545\u4fdd\u967a\u3067\u3082\u3046\u4e00\u5ea6mov\u3002\n        mov rax, &#91;OutputString]\n\n        call rax\n\n        cmp r15, 0   ;r15\u306f0\u306e\u307e\u307e\u306a\u306e\u3067\u3053\u308c\u3067\u521d\u56de\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a\u3067\u304d\u308b\u3002\u521d\u56de\u306a\u30890\u3001\u4e8c\u56de\u76ee\u4ee5\u964d\u306a\u30890\u4ee5\u5916\u3002\n        jnz setupskip\n\n        ;\u4ed6\u306e\u30c4\u30fc\u30eb\u306e\u4f4f\u6240\u3092\u6307\u5b9a\u3057\u3066\u304a\u304f\n        mov r8, &#91;SystemTable]\n\n        mov rcx, &#91;r8 + 48]\n        mov &#91;ConIn], rcx\n        mov rax, &#91;rcx + 8]\n        mov &#91;ReadKey], rax\n        \n        mov rcx, &#91;r8 + 88]\n        mov &#91;RuntimeServices], rcx\n        mov rax, &#91;rcx + 104]\n        mov &#91;shutdown], rax\n\n        mov rcx, &#91;r8 + 96]\n        mov &#91;BootServices], rcx\n        mov rax, &#91;rcx + 232]\n        mov &#91;uefiexit], rax\n\n        mov rcx, &#91;r8 + 96]\n        mov rax, &#91;rcx + 32]\n        mov &#91;getmemorymap], rax\n\n        setupskip:\n\n        jmp _bootjudge  ;\u30d6\u30fc\u30c8\u3057\u305f\u3044\u304b\u5224\u5b9a\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u3078\n\n    ret\n\n    global _bootjudge\n    _bootjudge:\n\n        key:\n\n        mov rcx, &#91;ConIn]\n        xor edx, edx\n        mov &#91;inputkey], edx\n        lea rdx, &#91;inputkey]\n        mov rax, &#91;ReadKey]\n\n        call rax\n\n        test rax, rax   ;\u3053\u3053\u3067\u306erax\u306f\u6210\u529f\u3057\u305f\u304b\u3069\u3046\u304b\u304c\u308f\u304b\u308b\u3002test\u306f\u305d\u308c\u3092\u78ba\u8a8d\u3067\u304d\u308b\u3002\n        jz _success\n\n        mov r10, 0x8000000000000006 ;\u4e8c\u5ea6\u624b\u9593\u306e\u7406\u7531\u306f64bit\u6570\u5024\u3068\u30ec\u30b8\u30b9\u30bf\u3092\u76f4\u63a5cmp\u3067\u304d\u306a\u3044x86_64\u898f\u5247\u306e\u305f\u3081\u3002\n        cmp rax, r10 ;\u4f55\u3082\u5165\u529b\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f0x8000000000000006\u3068\u306a\u308b\u306e\u3067\u3053\u308c\u3060\u3063\u305f\u5834\u5408\u306fkey\u306b\u3002\n        je key\n\n        jmp Fatal_error_handler ;\u3053\u308c\u4ee5\u5916\u3068\u3044\u3046\u3053\u3068\u306f\u81f4\u547d\u7684\u306a\u30a8\u30e9\u30fc\u306a\u306e\u3067\u518d\u8d77\u52d5\u3001\u5931\u6557\u3057\u305f\u3089\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3001\u305d\u308c\u3067\u3082\u30c0\u30e1\u306a\u3089hlt(CPU\u5f37\u5236\u505c\u6b62)\u3002\n\n        _success:\n\n         movzx ecx, word &#91;inputkey + 2]  ;inputkey\u306b\u8fd4\u308a\u5024\u304c\u5165\u3063\u3066\u3044\u308b\u3002\n        or ecx, 0x20  ;\u3053\u308c\u3067\u5927\u6587\u5b57\u3092\u5c0f\u6587\u5b57\u306b\u5f37\u5236\u7684\u306b\u5909\u63db(\u53f3\u304b\u30896\u756a\u76ee\u306e\u30d3\u30c3\u30c8\u3092\u5f37\u5236\u7684\u306b\u30aa\u30f3\u306b\u3059\u308b\u21922^6=32=16 x '2' +1 x '0' =0x20)\n\n        cmp ecx, 'y'\n        je _exituefi\n\n        cmp ecx, 'n'\n        je _shutdown\n\n        jmp judge_msg   ;cmp\u3067y\u304a\u3088\u3073n\u3067\u3082\u306a\u304b\u3063\u305f\u5834\u5408\u306fy,n\u4ee5\u5916\u3060\u3063\u305f\u3068\u3044\u3046\u3053\u3068\u306a\u306e\u3067judge_msg:\u306b\u623b\u308b\u3002\n\n        add rsp, 40\n    ret\n\n    global _shutdown\n    _shutdown:\n        ;(\u3053\u3053\u306b\u6765\u308b\u969b\u306b\u306frsp\u306f\u3059\u3067\u306b40\u306a\u306e\u3067\u30b9\u30bf\u30c3\u30af\u306e\u78ba\u4fdd\u306f\u7701\u3044\u3066\u3088\u3057\u3002)\n        mov rcx, 2  ;\u3053\u3053\u3067\u3069\u306e\u64cd\u4f5c\u3092\u3059\u308b\u304b\u3092\u9078\u629e\n        xor rdx, rdx    ;\u57fa\u672c\u7684\u306b\u306f\u307b\u307c\u5fc5\u8981\u306a\u3044\u304c\u8ffd\u52a0\u30c7\u30fc\u30bf\u3092\u5165\u308c\u308b\u3053\u3068\u3082\u3067\u304d\u308b(rdx r8 r9\u306b\u5165\u308c\u308b)\n        xor r8, r8\n        xor r9, r9\n        mov rax, &#91;shutdown]\n        call rax\n        add rsp, 40 ;\u5931\u6557\u3057\u305f\u969b\u306e\u5f8c\u7247\u4ed8\u3051\n    ret\n\n    global _exituefi\n    _exituefi:\n        sub rsp, 16 ;\u7b2c\u4e94\u5f15\u6570(\u5b9f\u306frsp\u306e\u7a7a\u304d\u5bb9\u91cf\u306f1\u30d0\u30a4\u30c8\u5206\u3060\u3051\u5c11\u306a\u304f\u306a\u3063\u3066\u3057\u307e\u3046!)\u3082\u4f7f\u3046\u305f\u308148\u4ee5\u4e0a\u306f\u5fc5\u8981\u3060\u304c8+48\u3067\u306f16\u306e\u500d\u6570\u306b\u306a\u3089\u306a\u3044\u3002\u305d\u3057\u3066\u3053\u306e\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\u306b\u6765\u308b\u6642\u306frsp\u306f40\u306a\u306e\u3067\u5dee\u5206\u306e16\u3092\u5f15\u3051\u3070OK\u3002\n        lea rcx, &#91;rel mapsize]\n        lea rdx, &#91;rel memorymap]\n        lea r8, &#91;rel mapkey]\n        lea r9, &#91;rel DescriptorSize]\n        lea rax, &#91;rel DescriptorVersion]\n        mov &#91;rsp + 32], rax   ;\u7b2c\u4e94\u5f15\u6570\u306f\u30b9\u30bf\u30c3\u30af\u306b\u5165\u308c\u308b\n        mov rax, &#91;getmemorymap]\n        call rax\n\n        mov rcx, 0x8000000000000002\n        cmp rax, rcx\n        je debug\n\n        jmp skip\n        debug:\n        call _debug\n        cli \n        halt:\n        hlt\n        jmp halt\n        skip:\n\n        mov rcx, &#91;ImageHandle]\n        mov rdx, &#91;mapkey]\n        mov rax, &#91;uefiexit]\n        call rax\n\n        add rsp, 56\n    ret\n\n;\u3053\u3053\u304b\u3089\u306f\u901a\u5e38\u306f\u4f7f\u308f\u308c\u306a\u3044\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\n\n    global Fatal_error_handler  ;\u81f4\u547d\u7684\u306a\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u969b\u306e\u30cf\u30f3\u30c9\u30e9\u30fc\n    Fatal_error_handler:\n        mov rcx, &#91;ConOut]\n        mov rax, &#91;OutputString]\n        lea rdx, &#91;Fatal_error_msg]\n        call rax\n        mov rcx, 5000000\n        mov r10, &#91;BootServices]\n        mov rax, &#91;r10 + 168]\n        call rax\n        \n        mov rcx, 0  ;\u3053\u308c\u306b\u3088\u3063\u3066\u518d\u8d77\u52d5\u304c\u3055\u308c\u308b\u3002\n        mov rdx, 0x8000000000000007 ;\u30a8\u30e9\u30fc\u30b3\u30fc\u30c9\u306f\u308f\u304b\u3089\u3093\u304c\u3068\u308a\u3042\u3048\u305aDEVICES ERROR\u3067\u3002\u3053\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u81ea\u4f53\u304c\u7c21\u7d20\u306a\u5206\u8d77\u304d\u308b\u30a8\u30e9\u30fc\u3082\u5c11\u306a\u3044\u3002\n        xor r8, r8\n        xor r9, r9\n        mov rax, &#91;shutdown]\n        call rax\n        ;\u518d\u8d77\u52d5\u3059\u3089\u5931\u6557\u3057\u305f\u30ac\u30c1\u3067\u3084\u3070\u3044\u30b1\u30fc\u30b9\u306e\u5834\u5408\n        mov rcx, &#91;ConOut]\n        mov rax, &#91;OutputString]\n        lea rdx, &#91;Reboot_Failure]\n        call rax\n        mov rcx, 5000000\n        mov r10, &#91;BootServices]\n        mov rax, &#91;r10 + 168]\n        call rax\n        add rsp, 40\n\n        cli\n        halt2:\n        hlt\n        jmp halt2\n\n        global _debug\n        _debug:\n        push rax\n        mov rcx, &#91;ConOut]\n        mov rax, &#91;OutputString]\n        lea rdx, &#91;Debug_msg]\n        call rax\n        pop rax\n        ret\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3093\u306a\u3068\u3053\u308d\u3060\u308d\u3046\u3002<br>\u307e\u3042\u307e\u3060\u8352\u524a\u308a\u306e\u90e8\u5206\u3082\u3042\u308b\u3068\u601d\u3046\u304c\u3001\u3053\u308c\u304b\u3089\u3082\u9811\u5f35\u3063\u3066\u3044\u304d\u305f\u3044\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>OS\u3068\u3044\u3046\u8a00\u8449\u306f\u77e5\u3063\u3066\u3044\u308b\u3060\u308d\u3046\u304b\u3002\u305d\u306eOS\u3092\u4eca\u56de\u306f\u4f5c\u3063\u3066\u307f\u3088\u3046\u3068\u3044\u3046\u4f01\u753b\u3067\u3042\u308b\u3002 OS\u3092\u4f5c\u308b\u306b\u306f\u3001\u307e\u305a\u4ee5\u4e0b\u306e&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-114","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.flattek.com\/index.php\/wp-json\/wp\/v2\/posts\/114","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.flattek.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flattek.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flattek.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flattek.com\/index.php\/wp-json\/wp\/v2\/comments?post=114"}],"version-history":[{"count":2,"href":"https:\/\/www.flattek.com\/index.php\/wp-json\/wp\/v2\/posts\/114\/revisions"}],"predecessor-version":[{"id":134,"href":"https:\/\/www.flattek.com\/index.php\/wp-json\/wp\/v2\/posts\/114\/revisions\/134"}],"wp:attachment":[{"href":"https:\/\/www.flattek.com\/index.php\/wp-json\/wp\/v2\/media?parent=114"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flattek.com\/index.php\/wp-json\/wp\/v2\/categories?post=114"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flattek.com\/index.php\/wp-json\/wp\/v2\/tags?post=114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}