2014-03-02から1日間の記事一覧

実験コード

Python2.6で実験 # -*- coding: utf8 -*- class Stack(object): class StackEmpty(Exception):pass def __init__(self): self.sp=0 self._stack=[] def push(self,x): self._stack.append(x) self.sp+=1 #spは最後にpushされたアイテムのインデクス+1を指す …

実行結果

先に 実行のイメージ。 下にコード本体があります #VM起動直後のスタック #レジスタ一式分の領域が確保されている [0, None, {}, 0, 0, 0] #レジスタの内訳 #上と順番が違うのでよみづらい 申し訳ない PC:0 SP:0 A:0 LOCALS:{} parent: None #レジスタへのア…

で、このコードに何の意味が?

このままだと、あまり意味がないのです(スミマセン)何かの間違いで 自分がマイコン上のインタプリタをCで書くとか,昨年あたりから流行の javascriptでオレ言語を書くalt.jsをやりたくなったりしたら、何か利用価値というかメモを読み返したくなるかも (無…

その他のメモ

サブルーチンコールに引数を渡すのに、やはりスタックを使うのですが、そっちのスマートな書き方(笑)は思いついてないです。 ローカル変数 本当は連想配列上に取らず、スタック上にとったほうが王道 言語の「ブロック」って概念、ひょっとして末尾再帰する…

サブルーチンコールとレジスタの退避

Cにせよ、Pythonにせよ、アセンブラにせよ、サブルーチンコールを行うときはスタックに現在実行中の位置に戻ってきて続きを実行できるように、現在の状態をセーブしておく必要がありますアセンブラの場合だと、CPU内のレジスタとよばれる場所の値をスタック…

Pythonでスタックマシンの擬似コード書いてみた

ついカッっとなって書いた。今は公開している