浮動小数点数の(より)正確な mod (その1)

浮動小数点演算で mod なんか計算するのか? と思うかもしれませんが、たとえば sin(10000.0) のような計算をする時、よくできている浮動小数点演算の処理系では、10000.0 `mod` 2π を計算してから、近似式で結果を求めています(細かく言うと、最終的には -…

PHP(および Perl )クイズ(追記、なんと Go 言語と共通であることが発覚)

これを実行すると、出力はどうなるでしょう? (追記あり。Perl でも同様ですが、なんとGo言語とも共通であることが発覚)

最速のエレベータの話

参考資料は、エレベスト―日本初のエレベーター鑑賞ガイド作者: 梅田カズヒコ出版社/メーカー: 戎光祥出版発売日: 2008/06メディア: 新書購入: 1人 クリック: 47回この商品を含むブログ (13件) を見るこちら。 参考資料の巻末の年表、p.142によれば、1931年の…

エレベータアルゴリズムとエレベータのアルゴリズム

ちょっと検索してみたところウィキペディアに英語記事はあるけど( http://en.wikipedia.org/wiki/Elevator_algorithm )日本語版の記事はまだのようだし、ジャストな解説も検索したところ出てこないようなので、そう難しいものでもないしちょっと書いてみる…

若松通商会津店の話

先日会津若松に 3 日ほど滞在する機会がありまして、若松通商会津店に行ってみました。 秋葉原の末広町駅近くに本店(?)のあるあの若松通商の「若松」という名の由来である会津若松の店です。 場所ですが、会津若松駅のすぐ近くにあるので、磐越西線や只見線…

libstand で遊ぶ

FreeBSD には( NetBSD にもあるようです)スタンドアローンなプログラム( OS などのない生の計算機環境)で使うための、OS の下の環境をある程度再現するライブラリ libstand があります。網羅的なドキュメンテーションは man 3 libstand で確認してくださ…

解説: Victor Yurkovsky さんのトークンスレッデッドコードインタプリタのサンプル実装

実装は https://github.com/metanest/SWTMi386-poc に置いてあります。 Victor Yurkovsky さんが 1. A new CPU の最後で示している、トークンスレッデッドコードマシンの proof-of-concept のインタプリタを、実際に動かせるようにしたものです。 アセンブラ…

RHDL の紹介

RHDL(Ruby HDL)は Ruby の内部 DSL として実装された HDL です(Ruby という名前の HDL がありますがそれとは無関係)。今のところモデリングとシミュレーションの実行のみで、Verilog HDL の出力といった機能はありません。 RubyForge にページがあります…

2013年 Bluespec の旅

ハードウェア記述言語の導入法っぽいダイアリーをいくつか書いてきましたが、Bluespec については日本国内では現在サイバネットシステム社がセミナーとかをやっていますので(月 1 回の体験セミナーはタダですが、オンサイトセミナーとかをビジネスにしてら…

株式会社マルツ電波 東海地区初出店処

株式会社マルツ電波 東海地区初出店処 ここの道路に面している、ビルのテナント看板の側面、タバコの自販機の裏にあります → http://www.mapion.co.jp/m/34.70367_137.73524_10/

Brainf*ck の [ と ] のセマンティクス

Brian Raiter 氏の http://www.muppetlabs.com/~breadbox/bf/ では、Brainf*ck の [ と ] を次のように定義している。 [ ポインタの指すバイトが 0 なら、対応する ] の直後に飛ぶ ] ポインタの指すバイトが非 0 なら、対応する [ に飛ぶ この定義は微妙に対…

MyHDL の紹介

MyHDL は Python の内部 DSL として実装された HDL( http://www.myhdl.org/doku.php/start によれば HDL and HVL (Hardware Verification Language) としている)です。 ダウンロード http://sourceforge.net/projects/myhdl/files/ から myhdl-0.7.tar.gz …

はてなブログの gist の表示をなんとかする

はてなブログの現行のスタイルシート( alpha2.css )では、pre 要素に影が付くようになっています。 Github 側の変更によるものと思われますが、現在の gist は 1 行 1 行がバラバラの pre 要素になっているため、1 行 1 行に影が付いて、見た目にウザい感…

Chisel の紹介

Chisel(Constructing Hardware in a Scala Embedded Language)は、Scala の内部 DSL として実装されたハードウェア記述言語(開発しているバークレー大 EECS(Electrical Engineering and Computer Sciences)では "hardware construction language" とし…

TRONSHOW の過去をさぐる

さきごろ TRONSHOW2013 が開催された TRONSHOW であるが、過去の開催はどうだったのか、ちょっと調べた。 TRONWARE 100 号の DVD に収録された、過去の TRONWARE が恰好のタイムマシンである。 7 号( http://www.personal-media.co.jp/book/tw/tw_index/080…

マイクロスクリプトでキーのリリースを検出するには

(参考資料 超漢字(B-right/V R4)仕様書、第4編 デバイス制御、第6章 KB / PD、6.6 属性データhttp://www.chokanji.com/developer/doc/brightv.r4/device/kbpd.html#ack ) 超漢字付属のマイクロスクリプトでは ACTION 〈手続き名〉 KEY とすることで、キー…

μT-Kernel for Raspberry Pi おぼえがき(6)

EABI 対応 コンパイラの ABI を EABI にすると、構造体のパディングが変わるため、アセンブラから C の構造体を触っているところで問題が出る。 kernel/sysdepend/cpu/raspib/offset.h に次のような修正を加えて動くようになったが、他にも修正が必要な箇所…

μT-Kernel for Raspberry Pi おぼえがき(5)

タイマー周り μT-Kernel のシステム資源としてタイマーがある。kernel/tkernel/src/timer.c の knl_timer_initialize という関数が初期化ルーチンである。 knl_timer_initialize が呼ばれるまでを順番に追うと、 icrt0.S の kernel_start: の次の行の main()…

μT-Kernel for Raspberry Pi おぼえがき(4)

ソフトウェア割込み番号の割当て Raspberry Pi では割込み番号 0~95 が GPU や ARM 周辺で使われているので、μT-Kernel が使うソフトウェア割込みは 96~127 を使うことにした。AT91 の番号を参考に、下位のビットパターンが同じになる 100~103 番とした。…

μT-Kernel for Raspberry Pi おぼえがき(3)

IRQ ハンドラ ARM の割込み(昔からの TRON の分類で言う「EIT の I」)は、コアでは外部の割込み要因の識別などをおこなったりせず、単一のハンドラを呼ぶようになっている。 AT91 では外部の割込みコントローラを使用しているのでハンドラのコードは簡単だ…

μT-Kernel for Raspberry Pi おぼえがき(2)

シリアル入出力の修正 μT-Kernel では、シリアル入出力の初期化は sio_init というルーチンで、前述の icrt0.S の中から呼ばれており、lib/libtm/src/sysdepend/機種名/sio.S ないし sio.c に定義がある。また、メッセージの表示は tm_putstring 関数を経由…

μT-Kernel for Raspberry Pi おぼえがき(1)

似たような環境に移植する人の参考になるかもしれないことを記録しておこうと思います ソースコードはこちらに http://github.com/metanest/utkernel-pi ローダ Das U-Boot を使用。Raspberry Pi 用は、FreeBSD を移植しているプロジェクトのものが使える ht…

ビューティフルコード第一章のマッチャを Go 言語にしてみた

ちょっとひっかかったのは文字列の後に \0 が付いてないので * のチェックでアクセスがはみ出る所ぐらい do~while で書いてあったものを if cond { break } に書き換えたのでそのへんがエレガントでなくなっている スライスを使っているので効率はほとんど…

高水準命令と割込み

RISC 教をあざわらうかのように、これでもか、という感じの命令が AVX で追加されているわけですが、そういった複雑な命令について TRON チップに、memcpy のような操作を 1 命令で実行する命令があることから「そんな命令があるのにリアルタイム性があるわ…

fsck には物理メモリがたくさん、絶対に必要か? (結論は出てない)

先日の FreeBSD 勉強会で、ブートシーケンスで swapon より前に fsck が走ってメモリ不足でコケて、ということが起きると、ずっと同じことの繰り返しになる、という話を聞いたので、では swapon を先に実行してから fsck ということはできないのか試してみた…

RPM パッケージ間の依存の非対称性について

Linux システムの、RPM ベースのディストリビューションにおいて、インストール時とアンインストール時の依存関係が非対称なことがあるようです。 私が実験しているのは Fedora (の yum )ですが、パッケージ a をインストールする時には依存関係で b もイ…

AM_ICONV の動作を確認するための最小環境

GNU gettext 添付の iconv.m4 にある autoconf マクロ AM_ICONV の話。実験のために configure を走らせるための最小環境を作るには、 だいたいこんな感じになる。 config.guess config.sub install-sh config.rpath が configure の実行時に必要なので、lib…

ビューティフルコード第一章のマッチャを Haskell っぽい Haskell にしてみた

最後のパターンがもう少しエレガントに書けないものか えらく行間が間延びしてたのでスタイルシートいじってみた。もし、下線が見えない、というような環境がありましたらぜひともご連絡いただきたく

Unixにおけるインタフェースと実装の単純さと複雑さのトレードオフ

『rootから/へのメッセージ』には、Unixには、トレードオフがある時、実装が複雑になることをいとわない、という性格がある、とある。 root(ルート)から/(ルート)へのメッセージ―スーパーユーザーが見たひととコンピュータ作者: 高野豊出版社/メーカー: アス…

はてなブログで MathJax を利用して、MathML で数式を表示する

MathJax プロジェクトがこれまで提供に利用してきた CDN の運用が止まります(2017年4月末)。 https://www.mathjax.org/cdn-shutting-down/ を参考に、新しい CDN の URL に移行するようにしてください(以下の記述は、まだ移行に対応していません(すいま…