BrainFuckとは
難解プログラミング言語の一つ。
オシシメサイトはhttp://www.google.co.jp/
以下俺的見解
・スレッドタイトルに全命令が入る素敵な言語。
・1レス内に全命令のリファレンスが入る素敵な言語。
> ポインタをインクリメント
< ポインタをデクリメント
+ ポインタが示すメモリ位置のデータをインクリメント
- ポインタが示すメモリ位置のデータをデクリメント
. ポインタが示すメモリ位置のデータを出力
, ポインタが示すメモリ位置のデータに入力
[ ポインタが示すメモリ位置のデータがヌルなら対応する]までジャンプ
] ポインタが示すメモリ位置のデータがヌルじゃないなら対応する[までジャンプ
前スレ: BrainFuck Part.2 <[+-.,]>
http://pc11.2ch.net/test/read.cgi/tech/1177988460/
過去スレ: BrainFuck <[+-.,]>
http://pc11.2ch.net/test/read.cgi/tech/1036013915/
BrainFuck Part.3 <[+-.,]>
■ このスレッドは過去ログ倉庫に格納されています
2009/01/08(木) 12:09:18
511デフォルトの名無しさん
2013/05/06(月) 19:27:05.67 brainfuck拡張するなら既存の言語でいいじゃん?
512デフォルトの名無しさん
2013/05/06(月) 19:33:06.10 ぐぬぬ
513デフォルトの名無しさん
2013/05/07(火) 03:27:27.06 ぐ ポインタをインクリメント
ぬ ポインタをデクリメント
ぬ ポインタをデクリメント
514デフォルトの名無しさん
2013/05/10(金) 21:00:06.63 入力された文字列の文字数の取得なんてできるんですかね
515デフォルトの名無しさん
2013/05/10(金) 21:04:10.53 [;>+<].
わかんね
そもそもint[]の要素数とか無いだろ
わかんね
そもそもint[]の要素数とか無いだろ
516デフォルトの名無しさん
2013/05/11(土) 01:48:40.71 文字入力は入力された一文字をポインタが指すメモリに代入するだけだろ
文字列を入力しているのは処理系がバッファを使ってるだけなんでは
文字列を入力しているのは処理系がバッファを使ってるだけなんでは
517デフォルトの名無しさん
2013/05/11(土) 20:01:40.22518デフォルトの名無しさん
2013/05/28(火) 14:26:09.78519デフォルトの名無しさん
2013/05/28(火) 21:10:00.01 +[+]
こんなんでいいの?
こんなんでいいの?
520デフォルトの名無しさん
2013/05/28(火) 23:01:12.42 文字入力は呼び出し側の責任としても
ループ回数はコード内に書かれるべき…じゃないのか
ループ回数はコード内に書かれるべき…じゃないのか
521デフォルトの名無しさん
2013/11/07(木) 04:13:05.65 BFのコンパイラ書いているのですが、最適化の議論ってどこかにありますか。
思いついて実装したのは、
@連続する+-や<>をまとめる(これは自明。>>>>> をadd r0, #5 にするとか)
Aメモリからレジスタに値をロード済みかを覚えておいてロード命令を減らす
です。
考えているだけのは、ループの頭でポインタの位置が不変かを判断し、ポインタの移動範囲を検出して、レジスタに割り当てるというものです。
例えば[>+<-]のようなループの場合、ポインタは当初の値(0)と次の値(+1)にしか移動しないので、これらの指すデータをレジスタに割り当て、
ループ脱出時にメモリに書き戻してやればいいかなと考えています。
動的コード生成をしているので軽い処理がいいのですがそうでないのも知りたいです。
対象CPUはARMで、使用マシンはなぜかHP50gっていうグラフ電卓です。
思いついて実装したのは、
@連続する+-や<>をまとめる(これは自明。>>>>> をadd r0, #5 にするとか)
Aメモリからレジスタに値をロード済みかを覚えておいてロード命令を減らす
です。
考えているだけのは、ループの頭でポインタの位置が不変かを判断し、ポインタの移動範囲を検出して、レジスタに割り当てるというものです。
例えば[>+<-]のようなループの場合、ポインタは当初の値(0)と次の値(+1)にしか移動しないので、これらの指すデータをレジスタに割り当て、
ループ脱出時にメモリに書き戻してやればいいかなと考えています。
動的コード生成をしているので軽い処理がいいのですがそうでないのも知りたいです。
対象CPUはARMで、使用マシンはなぜかHP50gっていうグラフ電卓です。
522デフォルトの名無しさん
2013/11/07(木) 12:32:42.32 面白そうなお題だな。
空き時間に考えてみよう。
空き時間に考えてみよう。
523デフォルトの名無しさん
2013/11/07(木) 12:45:19.07 いっそC++へのトランスレータにして、後はC++コンパイラの最適化に任せるのはどうだろう。
524デフォルトの名無しさん
2013/11/07(木) 13:18:00.81 >522 アイデアが出たらぜひ教えて下さい。
>523 それって既にあるのでは。BFでプログラムするのと同様でパズルみたいなものと思ってください。
[>+<-]をコンパイルした実行命令数(N=ループ回数)
@素朴版 12N+3
Aロード最適化 11N+3
B>+< を最適化 9N+3
Cレジスタ最適化 5N+6
D手動コンパイル 4N+6
詳細は、
http://pastebin.com/pk8fST8h
レジスタ割当:
r0: 汎用
r1: ポインタ
r2: [r1, #1]
Aはr0と[r1]がエイリアスになっているかを覚えてロード命令を削減
Bは>+<のようなパターンでポインタのinc/decを省く。
CはAに加えてr2と[r1,#1]をエイリアスにする。
Dは自動化は考えずに手でガリガリ記述
>523 それって既にあるのでは。BFでプログラムするのと同様でパズルみたいなものと思ってください。
[>+<-]をコンパイルした実行命令数(N=ループ回数)
@素朴版 12N+3
Aロード最適化 11N+3
B>+< を最適化 9N+3
Cレジスタ最適化 5N+6
D手動コンパイル 4N+6
詳細は、
http://pastebin.com/pk8fST8h
レジスタ割当:
r0: 汎用
r1: ポインタ
r2: [r1, #1]
Aはr0と[r1]がエイリアスになっているかを覚えてロード命令を削減
Bは>+<のようなパターンでポインタのinc/decを省く。
CはAに加えてr2と[r1,#1]をエイリアスにする。
Dは自動化は考えずに手でガリガリ記述
525524
2013/11/07(木) 15:18:20.89 脳内コンパイラがこんなコードを生成しました。
ローカルな最適化では定数部を除いてこれ以上は無理そうですね。
ldrb r0, [r1]
ldrb r2, [r1, #1]
cmp r0, r0, #1
b l1
l0:
add r2, #1
subs r0, #1
l1:
bne l0
strb r0, [r1]
strb r2, [r1, #1]
実行命令数 7 + 3N
本来なら、
ldrb r0, [r1]
ldrb r2, [r1, #1]
add r2, r0
strb r2, [r1, #1]
mov r0, #0
strb r0, [r1]
実行命令数 6
とか定数命令でできるのですが、、、
ローカルな最適化では定数部を除いてこれ以上は無理そうですね。
ldrb r0, [r1]
ldrb r2, [r1, #1]
cmp r0, r0, #1
b l1
l0:
add r2, #1
subs r0, #1
l1:
bne l0
strb r0, [r1]
strb r2, [r1, #1]
実行命令数 7 + 3N
本来なら、
ldrb r0, [r1]
ldrb r2, [r1, #1]
add r2, r0
strb r2, [r1, #1]
mov r0, #0
strb r0, [r1]
実行命令数 6
とか定数命令でできるのですが、、、
526名無し募集中。。。
2014/06/08(日) 09:57:05.09ID:TcDR/+bL 万能言語ならぬ全能言語
world* CreateWorld (darkness* Darkness) {
world* World = new World(Darkness);
World->Day = 1;
light* Light = CreateLight();
if (isGood(Light)) add(World, Light);
else throw BadCreation(Light);
Light->Name = "Day";
Darkness->Name = "Night";
++(World->Day); // World->Day = 2
/* 中略 */
bone* AdamsRib = (Adam->Rib[12])->Remove();
woman* Eve = CreateWoman(AdamsRib);
Eve->Name = "Eve";
add(World, Eve);
++(World->Day); // World->Day = 7
World->Sabbath->Interval = 7;
rest();
return World;
}
world* CreateWorld (darkness* Darkness) {
world* World = new World(Darkness);
World->Day = 1;
light* Light = CreateLight();
if (isGood(Light)) add(World, Light);
else throw BadCreation(Light);
Light->Name = "Day";
Darkness->Name = "Night";
++(World->Day); // World->Day = 2
/* 中略 */
bone* AdamsRib = (Adam->Rib[12])->Remove();
woman* Eve = CreateWoman(AdamsRib);
Eve->Name = "Eve";
add(World, Eve);
++(World->Day); // World->Day = 7
World->Sabbath->Interval = 7;
rest();
return World;
}
527デフォルトの名無しさん
2014/06/08(日) 09:59:54.00ID:083ejc+8 誤爆申し訳ない
世界はBrainFuckで記述されたのかもしれない
世界はBrainFuckで記述されたのかもしれない
528デフォルトの名無しさん
2014/06/08(日) 10:32:43.54ID:397riybv だれか BrainFuck の LLVM フロントエンド作らないかな
529デフォルトの名無しさん
2014/06/08(日) 11:29:37.30ID:qU5LgJI1 神はこれを見てよしとされた。はassert文
530デフォルトの名無しさん
2014/06/20(金) 07:05:56.84ID:ha/mjnLs BFオワタ・・・
http://pc.watch.impress.co.jp/docs/news/yajiuma/20140620_654252.html
IT'S SHOWTIME
HEY CHRISTMAS TREE isLessThan10
YOU SET US UP @NO PROBLEMO
HEY CHRISTMAS TREE n
YOU SET US UP 0
STICK AROUND isLessThan10
GET TO THE CHOPPER n
HERE IS MY INVITATION n
GET UP 1
ENOUGH TALK
TALK TO THE HAND n
GET TO THE CHOPPER isLessThan10
HERE IS MY INVITATION 10
LET OFF SOME STEAM BENNET n
ENOUGH TALK
CHILL
YOU HAVE BEEN TERMINATED
http://pc.watch.impress.co.jp/docs/news/yajiuma/20140620_654252.html
IT'S SHOWTIME
HEY CHRISTMAS TREE isLessThan10
YOU SET US UP @NO PROBLEMO
HEY CHRISTMAS TREE n
YOU SET US UP 0
STICK AROUND isLessThan10
GET TO THE CHOPPER n
HERE IS MY INVITATION n
GET UP 1
ENOUGH TALK
TALK TO THE HAND n
GET TO THE CHOPPER isLessThan10
HERE IS MY INVITATION 10
LET OFF SOME STEAM BENNET n
ENOUGH TALK
CHILL
YOU HAVE BEEN TERMINATED
531デフォルトの名無しさん
2014/08/29(金) 21:49:14.52ID:ttFFbJAa うつくしくない
532デフォルトの名無しさん
2015/12/15(火) 12:43:11.90ID:Qvgua2wU えst
533デフォルトの名無しさん
2016/03/09(水) 22:33:27.65ID:m6u1yQ86534デフォルトの名無しさん
2016/03/29(火) 09:32:40.37ID:/c8bAcK4 サッカーブッシュ日本代表日程ぷあたん(しゅっちょうまいくろ教育長交代)春文執行40代売上差額シュガーチョコ
https://www.youtube.com/watch?v=NDq1QoJY0nY宇ドナルドアナリストパワーストーンコーチングとしまえん
サッカーブッシュ日本代表日程古本屋よしたけしゅっちょうちょこしゅがー
ディーラー税務署天才開発者死亡詰みヨミドクターマイクロサービス不足
サッカーブッシュ日本代表日程ぷあたんシフト光金さかい強制バイト人権侵害問題
春分資源執行ニューヨーク低原価ぼったステーキソルトレイク福岡横浜新橋奴隷課金パチシフト強制バイト問題新潟米センター生残
コスメ24チャリティー隠れ40代生活保護プレイボーイバイトレードいたりあん接待問題
マスコミKARDローンケーオーサービス不足婚活パーティー寄付金執行原発ビジネス
FBIチャイニーズタイホテル売上事務所ガチャ決算ガチャキャンペーン(販売報道陣過激派組織向携帯最新情報提供終了
校長発言細心注意ノートン産廃エラー(著作権クレーム中国反応融資高額教育費)(中国捕鯨団体40代社員サッカーコメント
高額入学金ヤフウ新橋大学ヤフウ新橋理事長FX経費 おじや50代資産ガリバズフィード40代エリート
https://www.youtube.com/watch?v=NDq1QoJY0nY宇ドナルドアナリストパワーストーンコーチングとしまえん
サッカーブッシュ日本代表日程古本屋よしたけしゅっちょうちょこしゅがー
ディーラー税務署天才開発者死亡詰みヨミドクターマイクロサービス不足
サッカーブッシュ日本代表日程ぷあたんシフト光金さかい強制バイト人権侵害問題
春分資源執行ニューヨーク低原価ぼったステーキソルトレイク福岡横浜新橋奴隷課金パチシフト強制バイト問題新潟米センター生残
コスメ24チャリティー隠れ40代生活保護プレイボーイバイトレードいたりあん接待問題
マスコミKARDローンケーオーサービス不足婚活パーティー寄付金執行原発ビジネス
FBIチャイニーズタイホテル売上事務所ガチャ決算ガチャキャンペーン(販売報道陣過激派組織向携帯最新情報提供終了
校長発言細心注意ノートン産廃エラー(著作権クレーム中国反応融資高額教育費)(中国捕鯨団体40代社員サッカーコメント
高額入学金ヤフウ新橋大学ヤフウ新橋理事長FX経費 おじや50代資産ガリバズフィード40代エリート
535デフォルトの名無しさん
2016/08/07(日) 17:02:49.48ID:sg2m+nAp536デフォルトの名無しさん
2017/03/09(木) 20:43:21.75ID:2U142ZF0 BFでアッカーマン関数実装できる猛者はいないか?
537デフォルトの名無しさん
2018/05/23(水) 23:01:23.24ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
67IJR
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
67IJR
538デフォルトの名無しさん
2018/07/04(水) 23:06:42.04ID:gFgZc5FG 2Q3
539デフォルトの名無しさん
2018/07/06(金) 12:40:55.73ID:uTPDH9XV 67IJR
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【東京】赤坂サウナ火事2人死亡 サウナ室のドアノブ外れ閉じ込められた可能性 ★4 [nita★]
- 「PC買うなら急げ」は本当だった。マウスが一部販売停止&1月値上げを発表 [♪♪♪★]
- フィンランド、ミスや国会議員つり目投稿 くり返されるアジア人差別 ★3 [蚤の市★]
- 国会が「238秒停止」「3連続音声オフ」 代打・小泉大臣にも大音量ヤジ 起立する議員続出…高市総理の発言めぐり紛糾 [♪♪♪★]
- 【速報】 ロシア潜水艦が攻撃されて巨大水柱 [お断り★]
- 「こども2万円給付」は“ずるい”?「子持ちだけ優遇されてる」「来年から独身税もあるのに」…子育て世帯への支援は“不公平”なのか [♪♪♪★]
- 野党「台湾を国と認めてるの?」高市「◯☓※▲😤」野党「いや答えて」高市「◯☓~」野党「速記止めろぉ!」 [359965264]
- 【高市悲報】「格闘ゲーム」 👈いろいろ頑張って流行らせようとしたけどなんかイマイチだよな… なんでだ [862423712]
- 政府「ヒキこもり増えすぎ;;コイツラ普段何してんの;;」 [189987783]
- 赤坂サウナ 身元判明 川崎在住の会社経営者 [628392482]
- クソゴミ「スイッチでファミコンのレトロゲームやりまーす」
- 3時のおやつ🧁はふなキャンディー🍬🏡
