エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
Rubyからマシン語を直接呼ぶ - mirichiの日記
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
Rubyからマシン語を直接呼ぶ - mirichiの日記
Ruby1.9のDLで。 require 'DL' str = "\xb8\xff\x7f\x00\x00\xc3" # mov eax, 0x7fff : ret i = [str].p... Ruby1.9のDLで。 require 'DL' str = "\xb8\xff\x7f\x00\x00\xc3" # mov eax, 0x7fff : ret i = [str].pack("P").unpack("l!")[0] cfunc = DL::CFunc.new(i, DL::TYPE_INT) p cfunc.call([]) #=> 32767 文字列としてバイナリを直接生成して、そのポインタをDLに渡して呼び出せば、マシン語のコードを呼ぶことができる。 WindowsにはDEPというデータ領域実行保護機能があるが、とりあえずXPのSP2以降はシステムしか保護されていないので動く。Linuxとかの場合はなんかフラグをいじったりする必要があるらしいがよくわからない。 こういうプログラムが動くかどうかはRubyの実装に強く依存する。たとえばStringオブジェクトの文字列

