マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

minivm公開(ブラウザで動くx86エミュレータ的な何か)

まだ文字しか表示できない!レジスタもメモリの内容も表示しない!でも公開してしまうぜ!これは一体何かと言うと、ドロップしたx86なバイナリファイルを実行してしまうというものだ!32bitモードで動いているが、セグメントとかページングは一切動いていないから安心だ!とりあえず以下のアセンブリコードをnasmでアセンブって、下記ページのドロップポイントへできたバイナリファイルをドロップしてやるとHello Worldが表示されるはず!nasmが無い人用にバイナリファイルをアップしておいたから、やはり安心だ。とりあえず今は文字表示しかできない。頑張ればC言語でも行けるが無理は禁物だ!C言語で作った場合は余計なヘッダを削除し、Raw Binaryで頼む!ブラウザはFirefoxChromeあたりが良い。下記ファイルをダウンロードしたら名前がめちゃくちゃになるので名前を変えてあげよう
helloworld 直

[BITS 32]

    MOV EAX, 0x100000
    MOV BYTE [EAX +  0], 'H'
    MOV BYTE [EAX +  1], 'e'
    MOV BYTE [EAX +  2], 'l'
    MOV BYTE [EAX +  3], 'l'
    MOV BYTE [EAX +  4], 'o'
    MOV BYTE [EAX +  5], ' '
    MOV BYTE [EAX +  6], 'W'
    MOV BYTE [EAX +  7], 'o'
    MOV BYTE [EAX +  8], 'r'
    MOV BYTE [EAX +  9], 'l'
    MOV BYTE [EAX + 10], 'd'
fin:
    JMP fin

http://d-kami.net/minivm/MiniVM0_1.html