Brainfuck

Brainfuck VMとか作ってみた

BrainfuckやOokのソースコードをバイトコードにコンパイルするコンパイラ、バイトコードを実行するインタプリタ、バイトコードを機械語にコンパイルして実行するJITの三種類のプログラムを作ってみた。 GitHub - syuu1228/bfvm: Brainfuck VM使い方は以下の…

アセンブリコードをマトモに書き直す

配列プログラミング - かーねる・う゛いえむにっきのアセンブリコードをマトモに書き直した。 ただ、最短なアセンブリコードの実行時間が最短かというと、そんな事も無いかもしれない。メモリアクセスとか色々あるので、ある特定のインストラクションは遅い…

配列プログラミング

Brainfuckで+を65回実行してから.する時のアセンブリを配列上に書いてみる。 ちなみにアセンブリが無駄だらけなのは手書きで失敗したからCで書いて最適化無しで機械語に落としたものをそのまま展開しているからなので、ご容赦願いたい。 これをベースに最適…

ヒープメモリに実行権限を与える件

最近の(※要出典)LinuxやらMac OS Xやらでは素直に配列やmallocした領域を実行しようとしてもエラーになるようです。 mprotectでEXECビットを有効にしてやれば動く模様。 #include <stdio.h> #include <unistd.h> #include <sys/mman.h> #include <stdlib.h> int main(void) { char *addr; size_t psi</stdlib.h></sys/mman.h></unistd.h></stdio.h>…