Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ChatGPT とつくる PHP で OS 実装
Search
memory
PRO
December 22, 2024
Programming
3
270
ChatGPT とつくる PHP で OS 実装
PHP Conference Japan 2024
memory
PRO
December 22, 2024
Tweet
Share
More Decks by memory
See All by memory
AI 時代だからこそ学ぶべき PHP の基礎
m3m0r7
PRO
1
86
JVM の仕組みを理解して PHP で実装してみよう
m3m0r7
PRO
1
330
コードゴルファー道
m3m0r7
PRO
0
440
事業観点から見る技術的負債の返済
m3m0r7
PRO
4
1.2k
PHP でアセンブリ言語のように書く技術
m3m0r7
PRO
1
240
PHP でアセンブリっぽく書く技術
m3m0r7
PRO
1
150
How to implement a RubyVM with PHP?
m3m0r7
PRO
3
2.9k
二郎系ラーメンのコールで学ぶ AST 解析
m3m0r7
PRO
8
3k
RubyVM を PHP で実装する 〜Hello World を出力するまで〜
m3m0r7
PRO
1
940
Other Decks in Programming
See All in Programming
AkarengaLT vol.38
hashimoto_kei
1
130
Webサーバーサイド言語としてのRustについて
kouyuume
1
5.1k
はじめてのDSPy - 言語モデルを『プロンプト』ではなく『プログラミング』するための仕組み
masahiro_nishimi
4
18k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
220
Inside of Swift Export
giginet
PRO
1
340
Claude Agent SDK を使ってみよう
hyshu
0
1.5k
詳細の決定を遅らせつつ実装を早くする
shimabox
1
170
オンデバイスAIとXcode
ryodeveloper
0
390
AsyncSequenceとAsyncStreamのプロポーザルを全部読む!!
s_shimotori
1
230
三者三様 宣言的UI
kkagurazaka
0
340
予防に勝る防御なし(2025年版) - 堅牢なコードを導く様々な設計のヒント / Growing Reliable Code PHP Conference Fukuoka 2025
twada
PRO
9
1.7k
One Enishi After Another
snoozer05
PRO
0
180
Featured
See All Featured
Producing Creativity
orderedlist
PRO
348
40k
How to train your dragon (web standard)
notwaldorf
97
6.3k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
Code Reviewing Like a Champion
maltzj
526
40k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1k
The Cult of Friendly URLs
andyhume
79
6.7k
Faster Mobile Websites
deanohume
310
31k
A designer walks into a library…
pauljervisheath
209
24k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
Visualization
eitanlees
150
16k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Transcript
ΊΓʔ $IBU(15ͱͭ͘Δ 1)1Ͱ04࣮ 1)1ΧϯϑΝϨϯε 1
ΊΓʔ NNS ෳͷϕϯνϟʔاۀελʔτΞοϓاۀɼ ্اۀͰιϑτΣΞΤϯδχΞ$50ͱ ͯ͠׆ಈɻ ݄ʹגࣜձࣾϋςϨϏδϣϯʹೖ ࣾ͠ɺࢠձࣾͷ-JJHBגࣜձࣾ$50ʹबɻ ಉ݄ʹגࣜձࣾϋςϨϏδϣϯ$50 ʹबɻ 2
NFNPSZ NNS
3 NEW!
04ͷಈ͘Έ $IBU(15Ͱ͓ࢼ͠ 1)1ͰͲ͏ͬͯ࡞Δͷʁ %&.0 4 ͘͡
1)1Ͱ04Λ࡞Δʹ͋ͨΓҎԼΛ ࢀߟʹ͠·ͨ͠ 5 OS ͦͷͷͷ࡞Γํ OS ͮ͘ΓʹඞཁͳΞηϯϒϦɾCPU ͷࣝ
6
˞ղઆ͢Δ༰$IBU(15Ͱ ֶΜͩࣝͰ͢ 7
04ͷಈ͘Έ 8
04ͱ 0QFSBUJOH4ZTUFN ΦϖϨʔςΟϯάγεςϜ ͷ͜ͱ 8JOEPXT -JOVY NBD04ͳͲͳͲ
ͳΜ͔͍͍ײ͡ʹιϑτΣΞͱϋʔυΛܨ͍Ͱ͘ΕΔͭ 9 04ͷಈ͘Έ
04ͷಈ͘Έ جຊతʹ#*04ʢ#BTJD*OQVU0VUQVU4ZTUFNʣʹઃஔ͞ΕͨCZUFTͰ ॻ͔Εͨϒʔτϩʔμʔ͔Β͍ΖΜͳͷΛىಈ४උΛ͢Δ CJUTQSPUFDUJPONPEFͷҠߦʢCJU͔ΒCJUͷҠߦͳͲʣ ωοτϫʔΫɼ$16ɺ64#ϞχλͷଓͳͲ֎෦ͷσόΠεͱͷ௨৴ ˞6&'*ʢ6OJ
fi FE&YUFOTJCMF'JSNXBSF*OUFSGBDFʣͳͲ͋Γ·͢ 10 04ͷಈ͘Έ
04ͷಈ͘Έ ࠓճखܰʹ࣮͢ΔͨΊʹ6&'*Ͱͳ͘#*04Ͱಈ͘͜ͱΛલఏͱ͠·͢ɻ׳Εͯ ͖ͨΓࢲ͕ࢀߟʹ͍ͯ͠ΔจݙͰɼ6&'*Ͱղઆ͓ͯ͠Γ·͕͢ʜɻ ϒʔτϩʔμʔʢ.#3ʣʹࡌͤΒΕΔͷCZUFTͰ͕͢ɼ͔͜͜ΒଞͷσΟεΫ ͷը૾ΛಡΈࠐΜͰϝϞϦʹॻ͖ࠐΜͩΓɼωοτϫʔΫͱଓͨ͠ΓͳͲɼ༷ʑͳ͜ ͱΛ͍ͯ͘͠ඞཁ͕͋Γ·͢ɻ ಛʹϏοτϦΞϧϞʔυͱݺΕΔঢ়ଶ͔ΒϏοτϓϩςΫγϣϯϞʔυʢ· ͨʣʹҠߦ͢Δඞཁ͕͋Γ·͢ɻ
11 04ͷಈ͘Έ
04ͷಈ͘Έ ϓϩςΫγϣϯϞʔυϝϞϦͷอޢͰ͋ͬͨΓɼγεςϜͷ҆શੑΛ୲อ͢ΔͨΊʹ ಛݖϨϕϧͳͲ͕༻ҙ͞Ε͍ͯ·͢ɻ ϦΞϧϞʔυͰϞχλʢϏσΦʣؚΊͨσόΠεʹΞΫηεͰ͖ΔͳͲɼڧ͍ݖ ݶΛ͍࣋ͬͯ·͢ɻ ͦͷͨΊɼϋʔυΣΞʹଓ͢ΔࡍʹϦΞϧϞʔυͱϓϩςΫγϣϯϞʔυΛߦ͖ དྷͨ͠Γ͠·͢ɻ
12 04ͷಈ͘Έ
*OUFMYΞʔΩςΫνϟ ࡐʹ͍͢͠ͷ*OUFMYΞʔΩςΫνϟ ͍ΖΜͳࢿྉ͕Σϒ্ʹެ։͞Ε͍ͯΔͷ Ͱɼ$IBU(15Ͱෆ͍ͯ͠ΔใͳͲΛूΊ ͍͢ ͦͷͨΊɼॳֶͰೖ͍͢͠ͷ͕*OUFM YΞʔΩςΫνϟͰ͢
13 04ͷಈ͘Έ
ΞηϯϒϦͷछྨ ΞηϯϒϦʹ࣮༷ʑͳํݴ͕͋Γ·͢ɻͦΕͦ͜*OUFMYΞʔΩςΫνϟ͔Ͳ͏ ͔ʹΑͬͯมΘΓ·͢ɻ ࠓճ*OUFMY͓ΑͼY͚ͰΑ͘ΘΕΔͰ͋Ζ͏/"4. /FUXJEF "TTFNCMFS Ͱղઆ͠·͢ɻ 14
04ͷಈ͘Έ
$IBU(15Ͱ͓ࢼ͠ 15
ຊಡΜ͚ͩͲΑ͘Θ͔ΒΜʜ 16
ͦ͏ͩ$IBU(15ʹฉ͜͏ʂ 17
18
19
ͳΜͱग़ͩ͠ͷ෦ڭ͑ͯ͘Ε·͢ 20
ڭ͑ͯ͘ΕͨΓํͰ ͱΓ͋͑ͣͬͯΈ·͠ΐ͏ 21
·ͣOBTNͱRFNVΛΠϯετʔϧ͠·͢ 22
23
ઌ΄ͲͷίʔυΛCPPUMPBEFSBTNͱͯ͠ อଘ͠·͢ 24
25
$IBU(15ͷͱ͓ΓʹίϚϯυΛ࣮ߦ͠·͢ 26
27
28
RFNVͰ)FMMP8PSME͕ىಈͰ͖·ͨ͠ʂ 29
1)1ͰͲ͏ͬͯ࡞Δͷʁ 30
1)1Ͱͷ࡞Γํʹෳ͋Γ·͢ 31
όΠφϦΛͦͷ··ॻ͘ 1)1ΛΞηϯϒϦʹ͢ΔίϯόʔλΛ࡞Δ $ݴޠͰ࡞ͬͨͷΛ1)1''*Λͬͯ࡞Δ 32 1)1Ͱ࡞Δํ๏
શ෦ָͦ͠͏͡Όͳ͍Ͱ͔͢ʁ 33
ͨͩ࣌ؒ༗ݶͳͷͰࠓճʜ 34
όΠφϦΛͦͷ··ॻ͘ 1)1ΛΞηϯϒϦʹ͢ΔίϯόʔλΛ࡞Δ $ݴޠͰ࡞ͬͨͷΛ1)1''*Λͬͯ࡞Δ 35 1)1Ͱ࡞Δํ๏
όΠφϦΛͦͷ··ॻ͘ख๏Ͱղઆ͠·͢ 36
όΠφϦΛͦͷ··ॻ͘ 37
όΠφϦΛ͘ 38 όΠφϦΛͦͷ··ॻ͘
όΠφϦΛ͘ 39 όΠφϦΛͦͷ··ॻ͘ xxd ίϚϯυͰઌ΄Ͳ nasm Ͱੜͨ͠ bootloader.bin Λ͍ͯΈ·͢
όΠφϦΛ͘ 40 όΠφϦΛͦͷ··ॻ͘ ʮHello, World!ʯͱ͍͏୯ޠ͕ݟ͑·͢Ͷʂ
όΠφϦΛ͘ 41 όΠφϦΛͦͷ··ॻ͘ ʮHello, World!ʯͱ͍͏୯ޠ͕ݟ͑·͢Ͷʂ 512 όΠτʹͳΔΑ͏ʹθϩϑΟϧ͞Ε͍ͯ·͢
όΠφϦΛ͘ 42 όΠφϦΛͦͷ··ॻ͘ 512όΠτͷ࠷ޙʹ 0x55, 0xAA Ͱϒʔτϩʔμͷ ऴΘΓΛࣔͯ͋͛͠ΒΕͯ·͢
όΠφϦΛ͘ 43 όΠφϦΛͦͷ··ॻ͘ Φϖίʔυ B4 (mov ah, xxx) Φϖϥϯυ (0x0E)
ΦϖίʔυͱΦϖϥϯυͬͯʁ 44
ΦϖίʔυͱΦϖϥϯυͬͯʁ ΦϖίʔυؔΛࣈͰදͨ͠ͷɼΦϖϥϯυҾͱ֮͑ͯΒ͑Α ͍Ͱ͢ɻ *OUFMYΞʔΩςΫνϟγϣʔτΧοτͷΑ͏ͳΦϖίʔυ͕ଟ͍Ͱ͢ɻ ϒʔτϩʔμʔͰCZUFT͔͑͠ͳ͍ͷͰɼඞવͱ͍͑ඞવͰ͕͢ɻ ઌ΄ͲͷྫͰNPWBI YYYNPWBI·ͰΛηοτͱͨ͠#ͱ͍͏
ΦϖίʔυʹͳΓ·͢ɻ 45 όΠφϦΛͦͷ··ॻ͘
ઌ΄ͲͷίʔυΛΦϖίʔυͱΦϖϥϯυͰ දͯ͠Έ·͠ΐ͏ 46
47 B4, 0E ah ax ͷ্Ґχϒϧ (্Ґ 4 bit)ʢh
= highʣɼ al ԼҐχϒϧ (ԼҐ 4bit) Ͱ͢ (l = low)
48 BE, 0F 7C (0F 7C offset)
49 AC
50 3C, 00
51 74, 04 (04 Φϑηοτ)
52 CD, 10
53 EB, F7 (F7 Φϑηοτ)
54 F4
55 48ʙ21 ·Ͱ ʢmessage ΦϑηοτΛࣔ͢ͷͰ ίϯύΠϧ࣌ʹফ͑·͢ʣ
56 512 - ݱࡏͷҐஔ - 2 ΛθϩϑΟϧ (γάωνϟΛҾ͍ͨ)
57 55 AA Λॻ͖ࠐΈ (ϦτϧΤϯσΟΞϯͳͷͰٯ)
͜ΕΛ1)1ͰදͤΒΕΕྑͦ͞͏ʂ 58
59
60
61
)FMMP8PSMEΛ"DBUTBZT.FPXʹ ஔ͖͑ͯΈ·͠ΐ͏ʂ 62
63 "A cat says \"Meow\"\x00" ʹ
64 ग़ྗ݁Ռ͕มΘ͍ͬͯΔ͜ͱ͕ Θ͔Γ·͢Ͷʂ
ݱঢ়ͩͱKNQ໋ྩͳͲͷΦϖϥϯυͷ ΦϑηοτΛݻఆͰೖΕ͍ͯΔͷͰɼ ࣗಈͰܭࢉ͢Δඞཁ͕͋Γ·͢ 65
ͱ͍͏͜ͱͰ04Λ࡞Δʹ ͜ΕΛίπίπΕ͍͍ͷͰ͢ 66
Θ͔Βͳ໋͍ྩ͕͋Εʜ 67
68
$IBU(15͕ڭ͑ͯ͘Ε·͢ 69
ϏσΦϝϞϦΞυϨε 70
#*04ͷը໘Ͱͳ͘Կ͔Λදࣔ͢Δը໘Λ ࣮͢ΔʹɼϏσΦϝϞϦͷॻ͖ࠐΈ͕ ඞཁͰ͢ 71
72
73
ྫ͍͍ײ͡ʹͩͯ͘͠ΕΔͷͰ ͜ΕΛͦͷ··ίϐʔ࣮ͯ͠ߦͯ͠Έ·͢ 74
75
ͦΕͧΕΦϖίʔυΛදʹͯ͠Β͍ 1)1Ͱॻ͖ͯ͠Έ·͠ΐ͏ 76
77
$IBU(15εήʔʂ 78
%&.0 79
ʮ1)1ΛΞηϯϒϦʹ͢ΔίϯόʔλΛ࡞Δʯ ख๏Ͱ࡞ͬͨ044͕͋Γ·͢ 80
IUUQTHJUIVCDPNNNSQIQPT 81
%&.0 82
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 83