Man page of CHIKU_WAIT(2)

システムソフトウェアとポエムの差が激しいので,高山病に注意

mrubyの浮動小数点数演算をソフトウェアで置き換える

この記事はmruby Advent Calendar 2017の23日目の記事です

qiita.com

前提環境

この記事ではx86_64アーキテクチャをターゲットにしています。

mrubyはmasterの2017年12月5日のコミット Need to set `ci->proc` when we have `RProc` structure. · mruby/mruby@4a99f49 · GitHub の状態です。

はじめに

 一ヶ月ほど前mrubyにMRB_WITHOUT_FLOATという浮動小数点数関連の処理を取り除くオプションが追加されました。

github.com

今まではハードウェアでの浮動小数点演算に制限がある場合、自分でmrubyソースコードを改変して浮動小数点演算を取り除く必要がありましたが、このオプションが追加されたため、オプション一つで浮動小数点演算に制限がある環境でもmrubyを簡単に動作できるようになりました。

しかし、今回あえて浮動小数点演算に制限がある環境でMRB_WITHOUT_FLOATを使わないで別のやり方で対応してみました。 浮動小数点数演算にはハードウェアでの実行、ソフトウェアでの実現の2種類があります。 普段、x86_64ではハードウェアで浮動小数点演算を実行します。MRB_WITHOUT_FLOATは浮動小数点演算を排除することでハードウェアでの浮動小数点演算を無くそうということです。この記事ではmrubyの浮動小数点演算をハードウェアの実行ではなく、ソフトウェアで実現することで浮動小数点演算の制限がある環境でも問題なく浮動小数点演算を可能にする試みを紹介します。

続きを読む

Berkeley SoftFloatを使って浮動小数点数演算をソフトウェアエミュレートで置き換える(x86_64)

はじめに

この記事は公立はこだて未来大学 Advent Calendar 2017 18日の記事です。 adventar.org

今更ながら、夏のインターンでやってたことをまとめます。KLabの方々遅くなってすみません...。

さて、夏のインターンですが、mrubyの浮動小数点数演算をソフトウェアエミュレートで実行するという内容をしてました。 浮動小数点数演算にはハードウェアでの実行、ソフトウェアでの実現の2種類があります。 普段プログラミングしている際は気にすること無く浮動小数点数を扱いますが、レイヤーによってはハードウェアでの浮動小数点演算に制限がある場合などがあります。例えば、Linux Kernel内では浮動小数点演算を行ってはならないという制約がありますね。

僕がやっている mruby in BitVisorも同様に浮動小数点演算に制限があります(自分でレジスタの値を退避されるコードを書けば問題ない)。そこでソフトウェアフロートで置き換えることをしました。この記事ではまず、Berkeley SoftFloatの解説と使い方について書こうと思います。mrubyの置き換えに関してはmruby Advent Calendar 2017 - Qiitaをお待ち下さい。 Berkeley SoftFloatのサンプルコードや日本語の記事は殆どないので何か参考になればと思います。

続きを読む

HaconiwaとmrubyスクリプトでLinuxコンテナをつくる

tech.pepabo.com インターン中に理解を深めるために作ったLinuxコンテナについて書きます。chikuwaitです。

最近よくコンテナ型仮想化技術の名前よく聞きますよね。とりあえずDocker使うみたいな流れがあってとてもベンリ!みたいな。 漠然と普段使ってますけど、中身ちょっと知りたくありません?ということでとりあえず作ってみましょう。そんなに難しくない。

続きを読む

雰囲気でNginxのモジュール書いてみた

作るまでの流れ

今、GMOペパボ株式会社の福岡支社でインターンをしています、chikuwaitです。ペパボ研究所の松本 亮介 / まつもとりー (@matsumotory) | Twitterさんとry's boot campという三日間たのしいたのしいことをしていました。まつもとりーさんとどんなことしてたのかというと、WEBサーバ全般の座学とか、Nginxを触ったりという感じのことをしてました。

続きを読む