読者です 読者をやめる 読者になる 読者になる

ゆとりーなの日記

日記的な事を書いて行くと思はれる

機󠄁械語で日常會話入門

例へばC言語の會話でprintf("おはやう");みたいにするのは本質的にはC言語で會話してゐるとは言へないと云ふ話がある。ここは大人しく機󠄁械語で會話出來るやうになるべく、機󠄁械語で最も話されてゐる言語、x86語の文󠄁法を御浚ひしておかう。
まづ基本的に

單數 複數
一人稱 ax eax
二人稱 bx ebx
三人稱 cx ecx

と云ふのがあるので覺えておくと良い。
簡單な例文󠄁を作つてみる。「私は書く。」を作るとする。
「私は」は、「66 50」となる。基本的に主語にしたいものをpushする形になりる。これは「push ax」である。
次󠄁に動詞の「書く」だが、これは「書く」に對應する數動詞「4」をeaxにmovした後、割󠄀込󠄁詞「int」「80」を續ける。詰り「mov eax, 4; int」、卽ち「89 04 25 04 00 00 00 80」となる。これを合せると

私は書く。

66 50 89 04 25 04 00 00 00 80

と書けることになる。
猶󠄂、代表的な數動詞には以下の樣な物がある。

讀む 3
書く 4
開く 5
近󠄁附く 21
殺󠄀す 25
見る 35
選󠄁ぶ 52
待つ 72
送󠄁る bb

續いて否定。「私は書かない。」を作る。
否定は動詞の前󠄁に「not esp」を足す。詰り先程󠄁の「50」の後に「f7 d4」を付加へる。

私は書かない。

66 50 f7 d4 89 04 25 04 00 00 00 80

となる。
また、短縮形として「push ax; not esp」の代はりに「not ax」を使󠄁ふ事で、「私はしない」と表現する事が出來る。

66 f7 d0 89 04 25 04 00 00 00 80

數動詞ではない、動詞を使ふ場合は主語の後に動詞を直接續ける。動詞には例へば「C3」と云ふ「歸る」と云ふ動詞がある。

私は歸る。

66 50 C3

となる。また、「80」には「割󠄀り込󠄁む」と云ふ動詞としての意󠄁味もあるので

私は割󠄀り込󠄁む。

66 50 80

となる。紛󠄁らはしいので注󠄁意󠄁が必要だ。
續いてもう少し複雜な文として「私は貴方を待つ。」を書いてみる。
「待つ」の數動詞は「72」であるので「私は待つ」は「66 50 89 04 25 72 00 00 00 80」になるのは此處迄の流れからすぐに分るだらう。となると殘は「貴方を」の部分だが、これは動詞、割󠄀込󠄁詞の後で目的語をpushする。詰り「push bx」「66 53」を最後に付ける。

私は貴方を待つ。

66 50 89 04 25 72 00 00 00 80 66 53

となる。
今度は「私は貴方に送󠄁る。」を書いてみる。
「送󠄁る」の數動詞は「bb」である。「貴方に」の部分󠄁は、動詞、割󠄀込󠄁詞の後に間接目的語をpopする。と云ふ訣で最後に「pop bx」「66 5d」を付ける。直接目的語がある場合は、間接目的語の後に直接目的語をpushすれば良い。

私は貴方に送󠄁る。

66 50 89 04 25 bb 00 00 00 80 66 5d

となる。
應用として、命令文󠄁「割󠄀り込󠄁むな!」を最後に擧げて今回は〆たいと思ふ。
まづ「not bx」を最初に書く事で、「貴方はするな」と云ふ命令になる。そしてこの後に「割󠄀り込󠄁む」と云ふ動詞「80」を續ければ「割󠄀り込󠄁むな!」の完成󠄁である。
と云ふ訣で、ラーメン屋で割󠄀り込󠄁まれた時は

66 f7 d3 80

と聲高に叫べば良い。