新千葉 ガーベージ・コレクション

FPGA マガジンやインターフェースで書けなかったこと等をちょぼちょぼ書いてます。@ryos36

スタック型のVM

コンパイラの結果をスタックマシン型の VM に落とすことを考える。JVM などでは iload なるものがある。きっと istore もある(あーあったあった)だから、スタックと"変数"への出し入れは自由なわけだ。a = b + cを考えると iload b iload c + istore aとか…

おれおれ tiny scheme もついに VM コード生成まで来た

この2か月の成果。なんとか fib をコンパイルして VM のコードに落とすことに成功。 (:JUMP |:MAIN|) MAIN (:LABEL |:MAIN|) EXIT (:LABEL |:EXIT|) |:EXIT| (:HALT :R0) |:MAIN| (:LABEL |:MAIN|) (:JUMP |:label0|) (:LIVE-REG 0 (1 1 1 1 1 0 0 0 0 0)) …

FORTH で SHA512 の動作確認

sha256> gforth Gforth 0.7.3, Copyright (C) 1995-2008 Free Software Foundation, Inc. Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license' Type `bye' to exit s" SHA-384_512xxx.F" ok included Selection Menu: For SHA-384 enter …

vmgen とかスレッデッドコードとか

qiita に投稿した。vmgen で簡単なレジスタベースの VM を作る(2/2) - Qiitaqiita あれば blog いらねーんじゃないだろうか? つくった vm もダウンロードできるようにした。http://www.sinby.com/download/Hvala/hvm.tar.gzqiita にも書いたけど、64bit だ…

vmgen で VM つくる

CPS も大詰めだ。最後は VM をつくることになるわけだ。gcc までいくなら cgen というのがあって、特定の CPU の gcc をつくるのをサポートしてくれるようだ。まぁいまなら LLVM の方がいいのかもしれない。MeP や Epiphany の記述があって興味深い、、、が…

fact も cps 変換

とりあえず末尾再帰の fact も cps 変換できるようになった。 (:FIXH ((|:FACT0| (FACT0 |sym11| K N RV) (:= (N 0) NIL ((:RECORD-REF (|sym11| 0) (|sym23|) ((:APP |sym23| (|sym11| RV)))) (:- (N 1) (|sym17|) ((:* (N RV) (|sym16|) ((:RECORD-REF (FA…

xorshift

Google Chromeが採用した、擬似乱数生成アルゴリズム「xorshift」の数理 – びりあるの研究ノート開発中のプログラムで動くように書いてみた。長ったらしいのは xor を持っていないから。そもそも、ビット幅が特定できない、、、print もないしなぁ、、、 ((:…

eta(η) reduction

((:fix ((even? (x) (:if (:= x 0) :#t (odd? (:- x 1)))) (odd? (x) (:if (:= x 0) :#t (even? (:- x 1))))) (even? 997))) 典型的な交互に呼び合う非効率であるけど偶数奇数判定機。cps 変換すると (:FIXH ((EVEN? (|sym2| X) (:FIXS ((|sym3| (|sym4|) (:…

cps 変換したものを reorder

Unfortunately, the problem of reordering directed acyclic graphs for optimal register allocation is NP-complete. だそうなので、10 命令でも 10! 回計算しないといけなさそう。ということで、ヒューリスティックな方法で解きます。 (:FIXH ((|:G0| (G…

openocd と sama5d4

ちょっと前進。MEM-AP を探せないとおっしゃっている。MEM-AP がなにかは不明。 Open On-Chip Debugger 0.10.0-dev-00189-g554313b (2016-01-07-23:46) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html debug_le…

libusb とか

libusb0.1 と libusb1.0 というのが cygwin のぱけーじにあって、どうやら API が違うらしい。作者が同じかどうかもわからない、、、最新の openocd では libusb0.1 はねむいさんのぶろぐによると使わないらしい。libusb1.0 を使いましょう。あと、hidapi と…

OpenOCD を自前でコンパイル

openocd> ./bootstrap + aclocal + libtoolize --automake --copy + autoconf configure.ac:12: error: possibly undefined macro: AC_MSG_WARN If this token and others are legitimate, please use m4_pattern_allow. See the Autoconf documentation. co…

マヨイドーロを解いてみた

マイドーロでもマヨロードでもない。マヨイドーロ。scheme で解いてみた。 (define (myload0) `((Z C B))) (define (myload1) `((Y A 'B) (Y A B 'C B))) (define (myload n) (cond ((= n 0) (myload0)) ((= n 1) (append (myload1) (myload0))) (else (mylo…

git の bare の branch の HEAD の変更

Gitでよく使うコマンドまとめ - Qiitaclone 元の remote bare repository で % git symbolic-ref HEAD refs/heads/XXX しておく

フルスタック

昨日、この本(下のリンク)の作者が J-Wave に出ていた。「先生はお金に執着していなくて、、、」うんぬんかんぬん。ん?それじゃ だめなのでは?と疑問に思 そういえば今年ノーベル賞をとった大村智(益次郎を想起させてで印象が悪いが、、、偏屈で聞かぬ奴…

NETGEAR の ReadyNAS を使う

WD の 3T を2使って ReadyNAS 102 にインストール。最初、HD を入れるときにセットの仕方がわからなくて難儀した。1 でボタンを押すと 2 のコネクタがスライドして外れるようになっている。そして、スライドさせて HD を入れる。まずは DHCP で立ち上げた。…

Dell のなんか脆弱性

Win32/CompromisedCert.Cという脆弱性があるというアラートが Windows 8.1 で表示された。詳細を見ると C:\Program Files\Dell\Dell Foundation Services\Dell.Foundation.Agent.Plugins.eDell.dll C:\Program Files\Dell\Dell Foundation Services\Dell.Fou…

ghdl で ieee 2008

ghdl で numeric_std を使う方法。結論から書くと --std=08 を使う。ghdl のライブラリの下の list は次の通り。 ieee/ Makefile.inc README std/ vital2000/ ieee2008/ mentor/ redist1164/ synopsys/ vital95/普通に ghdl xxx_tb.vhdl とかすると ieee が…

ghdl で Xilinx の unimacro とか

Xilinx の unimacro と unisims を ghdl でコンパイル。ghdl の使い方を 100 % 把握していないのですが、なんとかなった。まず -i で Import ghdl -i --ieee=synopsys --work=unisim unisims/*.vhd ghdl -i --ieee=synopsys --work=unisim unisims/primitive…

ghdl 再び

hanzer/gVHDL · GitHub 昨日失敗した ghdl のコンパイル。上の github のソースをもってきて gcc-4.9.3 を指定するといまのところコンパイルがうまくいっている。 You need to download and untar the sources of gcc version 4.9.2 [do not modify this lin…

ghdl

cygwin で ghdl をコンパイルするも結局できなかった。おそらく 32bit 環境ならできる。 vhdl/ortho-lang.c がコンパイルできなかった。[追記] 最終的にうまくいったryos36.hatenablog.com以下ダメだった記録。cygwin で ada をインストール。gnatmake が動…

C# で画面キャプチャ

画面をキャプチャする: .NET Tips: C#, VB.NET キャプチャーで来た。

gs で png 出力

gs -dNOPAUSE -dBATCH -sDEVICE=pngalpha -sOutputFile="o.png" screen4.epsgs で DEVICE を pngalpha にすると png 出力になることがわかった。png256 とかもあるのか。 http://ghostscript.com/doc/current/Devices.htm なんだ tiff もできるじゃん。とい…

cygwin postscript で漢字

本当は gs なんだけど。 Cygwin + Ghostscript + Windows TrueTypeフォント - you/uni のとおりに ln -s /cygdrive/c/Windows /usr/share/mswin で /usr/share/ghostscript/ver/Resource/Init/cidfmap に追加 /MS-Gothic << /FileType /TrueType /Path (/usr…

chicken scheme + postscript

postscheme というものを使用して scheme で postscript の出力をしてみた。 h8gi/postscheme · GitHub おかげで postscript がわかりかけてきた。SICP の wave は面白い結果を生む。

tinyclos

tinyclos でプログラミングできつつある。 これは楽。純粋な Lisper じゃない私向き。 define-generic は2回呼ぶとそれまでの登録を消してしまうことがわかった。 #;1> (load "test.scm") ; loading test.scm ... ; loading /usr/lib/chicken/7/tinyclos.im…

tinyclos

Scheme でも CLOS が使える。tinyclos 。1992 に Xerox の人が書いている。たぶんThe Art of the Metaobject Protocol の作者。 読んで解説を書いてる人がいる。http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3ATinyCLOS複雑そうなのに 1000 行に満…

chicken-install

FreeBSD には alloca.h がない。man alloca とすると stdlib.h を必要とすると書いてある。なぜか chicken の readline は alloca.h を include している。そこで > chicken-install -r readline readline/readline-egg.c を編集 > sudo chicken-install -t …

介護保険制度はレンタルが原則

なんで、介護保険制度はレンタルが原則なのか?例えば、うちのばあい amazon で 12,000 円程度で購入できるトイレの手すりを月 2,000 円で借りている。おおむね6カ月でもともとの金額に達する。レンタルは大体こんなもんだ。なぜレンタルが原則なのかは不明…

scheme でもうすこしできた。

(define last-data10b '()) (define count-in 0) (define count-out 0) (define (line-scaler data10b last-flag) ;; (if (= count-in count-out) (assert (null last-data10b))) (print `(,count-in ,count-out)) (let ((new-value12b (if (= count-in coun…