2 part forth (907レス)
2 part forth http://mevius.5ch.net/test/read.cgi/tech/1073673931/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
427: デフォルトの名無しさん [sage] 2008/10/03(金) 20:24:33 慣れると気持ちいいよJoy。forthは知らんけど http://mevius.5ch.net/test/read.cgi/tech/1073673931/427
428: デフォルトの名無しさん [sage] 2008/10/03(金) 20:29:08 >426 Forthは仮想スタックマシンのアセンブラだから、 (仮想)マシンの理解度によるだろな。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/428
429: デフォルトの名無しさん [sage] 2008/10/03(金) 22:29:45 いや、もっと視認しやすい記号セットを使ってくれって話だろ。 ハイライトできるエディタで単語登録するか、トランスレータでもかますのがいいと思う。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/429
430: デフォルトの名無しさん [sage] 2008/10/03(金) 23:01:49 ところでリターンスタックって別に必要なの? 普通のCPUは1本だよね。 スタックに対して相対アドレッシングがないからってことかな? http://mevius.5ch.net/test/read.cgi/tech/1073673931/430
431: デフォルトの名無しさん [sage] 2008/10/03(金) 23:57:29 >419 >rとr>は確かに見た目がわかりにくい。 よほどのことが無い限り使わない。 localがあれば要らない。 >430 呼出しのときにデータスタックで直接パラメターを渡すためでしょう。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/431
432: デフォルトの名無しさん [sage] 2008/10/04(土) 00:00:27 >>430 普通のアーキテクチャだと関数呼び出しのスタックにパラメータも突っ込んじゃうけど forthはデータのpushと関数呼び出しの戻りアドレスが入るスタックが別なんよ。 っていうか別だから面白いことができるので、一緒だったらループとかで涙が出そうだと思う。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/432
433: デフォルトの名無しさん [sage] 2008/10/04(土) 00:10:21 SP, BPレジスタに相当するものがあれば良いのでは http://mevius.5ch.net/test/read.cgi/tech/1073673931/433
434: デフォルトの名無しさん [sage] 2008/10/04(土) 17:45:11 リターンスタックとデータスタックが一緒だと、 リターンアドレスを壊さないようにデータをいじるのがメンドイ。 リターンアドレスが詰まれている位置を避けるようにして スタックをアクセスしなきゃいけないから。 それはSPとBPがあってもメンドイことに変わりはない。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/434
435: デフォルトの名無しさん [sage] 2008/10/04(土) 19:46:33 >>430 まあ、便利だから? 実装としてはバローズのメインフレーム見たく演算とリターン アドレス保存を一本のスタックでこなすものもあるよ。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/435
436: デフォルトの名無しさん [sage] 2008/10/04(土) 21:37:24 factorだともうひとつスタックあるよ http://mevius.5ch.net/test/read.cgi/tech/1073673931/436
437: デフォルトの名無しさん [sage] 2008/10/04(土) 23:25:44 データスタックとリターンスタックがないと チューリングマシンと等価じゃないらしいぞ http://mevius.5ch.net/test/read.cgi/tech/1073673931/437
438: デフォルトの名無しさん [sage] 2008/10/05(日) 00:17:09 >>437 等価じゃないとはよく聞くけど、等価じゃないとする説明ってどっかにないですかね。 それで実用で困ることありますかね。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/438
439: デフォルトの名無しさん [sage] 2008/10/05(日) 01:12:05 今理解した。 リターンスタックってそのままBP相当じゃん。 ほんとはBPポインタ一個あれば十分だよね? 素直にBPを持たずにわざわざリターンスタックなんて用意してるのは、 スタックマシンと言えなくなるからかね。 なんだかなあ。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/439
440: デフォルトの名無しさん [sage] 2008/10/05(日) 03:10:12 BPあってもメモリがないとな http://mevius.5ch.net/test/read.cgi/tech/1073673931/440
441: デフォルトの名無しさん [sage] 2008/10/05(日) 03:49:49 今理解した。 BPってそのままリターンスタック相当じゃん。 ほんとはリターンスタックあれば十分だよね? 素直にリターンスタックを持たずに、わざわざBPなんて用意してるのは、 レジスタマシンと言えなくなるからかね。 なんだかなあ。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/441
442: デフォルトの名無しさん [sage] 2008/10/05(日) 07:20:41 >>437 メモリアクセスできない純粋なスタックマシンなら、スタックが二本ないと チューリング等価ではないかも知れないが、FORTHはメモリアクセス @ ! が あるから、たとえスタック一本であってもチューリング等価じゃね? 考えてみればわかるが、メモリアクセスがあるとスタックの本数を自由に増やせる。 FORTHとスタックマシンとConcatenative言語は、それぞれ別の概念で、 単純に等号で結べないから、何について話しているのか意識しないと混乱すると思われ。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/442
443: デフォルトの名無しさん [sage] 2008/10/05(日) 09:51:29 ForthのVMとしては、 論理的には最低限二つの区別されたスタックがある。 標準的な実装での利点(v.s.スタックフレーム方式)は、 サブルーチン間でのデータのコピーが減らせること。 スタックフレーム一本でやるのはCとかでも標準的な実装だけど、 VMという同じ抽象度で比べれば、Cにはスタックは無い。 VMが実装できれば機械自体の仕組みはどうでも良い。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/443
444: デフォルトの名無しさん [sage] 2008/10/05(日) 13:26:57 込み入った話は分からんけど、 とりあえずBF書けたらチューリング完全じゃなかったっけ? http://mevius.5ch.net/test/read.cgi/tech/1073673931/444
445: デフォルトの名無しさん [sage] 2008/10/05(日) 14:12:31 なんか話が噛み合ってない気がする。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/445
446: デフォルトの名無しさん [sage] 2008/10/05(日) 15:11:57 なんでそこまでチューリングマシンにこだわるのかわからん。 Forthがチューリングマシンであろうとなかろうと Forthで実用的なプログラムは書ける。 あともう一人、やたらリターンスタックを排除したがる奴も 何をしたいのかさっぱりわからん。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/446
447: デフォルトの名無しさん [sage] 2008/10/05(日) 17:47:31 まず当たり前の大前提の確認からだけど、Forthはチューリング完全だから。 仮にForthの仕様からリターンスタックだけを排除したとしても(それはForthとは呼べないだろうが) チューリング完全だ。理由は>>442 リターンスタックがBPで代用できるとか正直意味わからん。 スタック演算自体理解してない希ガス。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/447
448: デフォルトの名無しさん [sage] 2008/10/05(日) 18:27:08 リターンスタックという名前がいかんのだろ。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/448
449: デフォルトの名無しさん [sage] 2008/10/05(日) 18:35:04 >>437 スタックオートマトンとスタックマシンをごっちゃにしてる気がする。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/449
450: デフォルトの名無しさん [sage] 2008/10/05(日) 18:39:13 >>448 むしろリターンスタック以外の名前があるなら知りたいものだが。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/450
451: デフォルトの名無しさん [sage] 2008/10/05(日) 19:02:41 >442 大雑把にはこんな感じかね。 ・データスタック: 引数&戻り値 ・リターンスタック: 実行する命令列(辞書で展開された単語含む) リターンスタックというよりもオーダースタックといった方がちょうど良い気がするけどね http://mevius.5ch.net/test/read.cgi/tech/1073673931/451
452: デフォルトの名無しさん [sage] 2008/10/05(日) 19:25:44 リターンアドレスを積んでいるからリターンスタック それでいいと思うが、難しく考えすぎじゃね?>>451 http://mevius.5ch.net/test/read.cgi/tech/1073673931/452
453: デフォルトの名無しさん [sage] 2008/10/05(日) 19:28:44 Aスタック←→Bスタック だったら勘違いが起きなかったと思う。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/453
454: デフォルトの名無しさん [sage] 2008/10/05(日) 19:34:19 >>453 むしろ勘違いを引き起こしそうなんだが。 リターンスタックが難しいんじゃなくて、 リターンアドレスをスタックに積むという 当たり前の関数呼び出し規約を説明しなければ、 理解されない時代になったということか… http://mevius.5ch.net/test/read.cgi/tech/1073673931/454
455: デフォルトの名無しさん [sage] 2008/10/05(日) 21:59:43 なんでリターンスタックの名前で混乱とか勘違いがあるの? ひょっとして、リターンと聞いて戻り値を連想しちゃう人がいる、とか? だとしたらかなりキビシい状況だな。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/455
456: デフォルトの名無しさん [sage] 2008/10/06(月) 01:09:11 カールスタックの方が一般的じゃね? http://mevius.5ch.net/test/read.cgi/tech/1073673931/456
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 451 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.015s