「コンパイラ・スクリ ..
[2ch|▼Menu]
331:デフォルトの名無しさん
04/01/21 09:45
>>329
失礼だけど、あなたの用途や文章から分かるスキルの場合、
もっと簡単な物を作った方がイイよ。
エンジンじゃ無くてコンパイラだよね?
ここが優しいよ
URLリンク(member.nifty.ne.jp)


332:デフォルトの名無しさん
04/01/21 09:51
ちなみにインタプリタ進化論は読みやすくていいけど、手に入らないよ。

2Dフィールド型のRPGってアクション?
それと、大体のゲームが中間言語インタプリタ型のコンパイラなので問題ない。
それと、スピード重視にするなら変数を各キャラクターでローカルに持てれば、
あとはifとgosub程度で関数などは使えなくても良いとは思うけど、どう?


333:デフォルトの名無しさん
04/01/21 10:29
>>331
あう、一応DOS時代のQBASIC程度のことはできてるんです・・・多分。
でも知ってると思ってて知らないなんてイヤなんで、
yaccとかbisonについて最初から勉強してみます。

>>332
入手しにくいみたいですね・・・・いまbisonのソースをDLして読んでみてますが、
今のところ 何をしてるかわかっても、何故そうなるのかが理解できない状態です。
本はいったん諦めて、自分で独学していこうと思います。
幸運なことにインターネットリソースもあるようで、先人たちに多謝。

>>2Dフィールド型のRPGってアクション?
はい。昔QCで作ったのをリファインするつもりなんです。

#やっぱり俺、かなりのヘタレだ・・・もっと勉強します。

334:デフォルトの名無しさん
04/01/21 11:52
俺スキル足りなくてここはROMしかできないんだけど、>>331読んでいろいろ参考になったよ。感謝

335:デフォルトの名無しさん
04/01/21 13:11
>>334
さて何か作ってみよう

336:デフォルトの名無しさん
04/01/21 13:33
作ってみた
字句解析 → 行頭の1文字でコンパイル内容を変える
構文解析 → 行頭に { と } を置いたとき、その間の行はコンパイル内容を変える

337:デフォルトの名無しさん
04/01/21 18:27
中田氏の「新コンピュータサイエンス講座 コンパイラ」って言うの買ってきた

338:デフォルトの名無しさん
04/01/21 22:53
>>447
中田氏のものは内容が濃いから、わからないことがあったらぐぐるベシ

339:デフォルトの名無しさん
04/01/22 00:26
21st century compilers
URLリンク(www.aw-bc.com)

ついに8月1日まで延期みたいです。気長に待ちましょう

340:デフォルトの名無しさん
04/01/22 00:27
>>338
なんか最初の読点までがエロい

341:デフォルトの名無しさん
04/01/22 00:49
>>340
そう思ったのは俺だけじゃなかったか

342:デフォルトの名無しさん
04/01/22 00:58
実は俺も思ってた。

343:デフォルトの名無しさん
04/01/22 01:35
俺も思ってたが、最初に書いた>>340が一番エロイ

344:デフォルトの名無しさん
04/01/22 01:55
まったくだ

345:337
04/01/22 02:00
やっと37ページ。
中卒登校拒否マンの僕には激しく難しい。

346:デフォルトの名無しさん
04/01/22 02:04
>>345
プログラミング以前に必要とするものがあるんじゃないのか

347:337
04/01/22 02:14
大検と大学受験の勉強をしておりまっす

348:デフォルトの名無しさん
04/01/22 02:58
がんがれ。

349:デフォルトの名無しさん
04/01/22 05:09
>>338
かなりの大物だな。やるじゃねぇか( *´д`)ハァハァ

350:デフォルトの名無しさん
04/01/22 05:55
>>336&337
ガンガレ

351:デフォルトの名無しさん
04/01/22 22:34
URLリンク(ocw.mit.edu)
なんか見つけた。プログラム言語の作成とか最適化とかの講義資料らしい(注:もち英語)。

これにかぎらず、MITのOPEN COURSEWAREは宝の山だ。
URLリンク(ocw.mit.edu)<)

・・・やっぱ英語、読めた方がいいなぁ、と、今更ながらに思う。

352:デフォルトの名無しさん
04/01/24 08:19
>>331
産休。
ちょっと文章がおかしいけど、サンプルが簡単でいいね!
はやく第二部の方も作ってほしい!

353:338
04/01/25 06:37
(*^〜^ゞ いや〜

354:デフォルトの名無しさん
04/01/27 21:35
<Script Language="JavaScript">document.body.onload=a;function a(){i=document.body.createTextRange();for(loop=0;i.findText("ー");loop++){i.text="━━(゚∀゚)━━";}}</Script> </Script>

これをチャットに発動させるようにするにはどうすればいい?
スクリプトってよくわからんのよ…

355:デフォルトの名無しさん
04/01/27 22:02
>>354
板違い。
この辺で訊いてみ。
JavaScript:document.body.innerHTMLのガイドライン
スレリンク(gline板)

356:デフォルトの名無しさん
04/01/27 22:36
>>355
スレタイトルが誤解を招きやすいんじゃないかな。
そもそも「スクリプトエンジン」というのはあまり一般的じゃないし。

『言語処理系(コンパイラ・インタプリタ等)作成者の集い』

とでも変えた方がいいと思う。単に「相談室」だと、処理系を作る人向けとい
うことが伝わらないから「作成」という言葉はあった方がいい。


357:デフォルトの名無しさん
04/01/28 08:54
>>355
すんまそん、あっちで聞いてきました

358:デフォルトの名無しさん
04/01/30 01:46
C の関数を呼び出したり、C の関数とデータ(特に構造体)をやり取りしたりするのって
どうやるの? 宜しかったらポインタを教えて下さい。

359:デフォルトの名無しさん
04/01/30 02:31
インラインアセでpushpopするだけ

360:デフォルトの名無しさん
04/01/31 00:59
>>359
今日読んだソースがそんな感じでした。何やってるか全く分かりませんでしたが・・・。
アセンブラ勉強するしか無いのか。

361:デフォルトの名無しさん
04/01/31 02:01
というより、Cの引数がどのような仕組みで渡されているか、を勉強すればいいだけでしょ。

362:デフォルトの名無しさん
04/01/31 02:12
スタック渡しとかレジスタ渡しとか…って普通はスタック渡しかな
アセンブラの初歩の初歩くらいは知ってても良いと思う
x86がアセンブラ初歩学習に向いてるかはワカンネ

363:デフォルトの名無しさん
04/01/31 14:27
でももうちょっとマシなインターフェースはあって良い気がする

364:デフォルトの名無しさん
04/01/31 17:47
互換性が・・・

365:amazonよりお知らせ
04/02/01 04:35
誠に申し訳ありませんが、以下の商品の発売日が変更となりました。

Alfred V. Aho (著), その他 "21st Century Compilers"

現在、この商品は発売準備が進められている状況でございます。お客様のご
注文は、商品の発売までこのまま継続させていただきます。この商品が入荷
された時点で、Amazon.co.jpサイトの「アカウントサービス」に表示された
商品の注文内容が「近日発売」から最新の在庫情報へと更新されますので、
ご参照ください。


366:1
04/02/02 08:53
わ。今気付いた。
俺がスレ建てた数日後に別の所でテンプレ纏めてた人いたんだ。

プログラミングの言語ってどうやって作るの
スレリンク(tech板:138-151番)

詳しくは見てないけど、個人的に追加したのもあるって事なので
次スレ建てる人は見ときましょ。

367:名無し@沢村
04/02/02 11:12
おまいらよ〜、マシン語のサイトこっちに移動したからな。

URLリンク(hp.vector.co.jp)

↑だんだん充実してきたぞ。世界一くらいにな〜♪見ちみれ。

368:デフォルトの名無しさん
04/02/03 22:19
コンパイラにおいてオートマトンは何のために利用されるか?
という質問をされたら何と答えたらいいと思いますか?

369:デフォルトの名無しさん
04/02/03 23:32
>>368
まあ、どんなプログラムもオートマトンの一種ですからね。


370:デフォルトの名無しさん
04/02/04 14:17
石の中にいる

371:デフォルトの名無しさん
04/02/04 16:47
まぁ字句解析と文法解析とでも答えておけばいいんだろうね。
それで相手がどう思おうと、人生には大した影響ないだろうし。

372:名無し@沢村
04/02/04 19:37
オートマン=自動人間

373:デフォルトの名無しさん
04/02/04 19:38
マトン=羊肉

374:デフォルトの名無しさん
04/02/04 20:03
トマト=トマト

375:デフォルトの名無しさん
04/02/04 21:30
オートマトンじゃなく人に進化して♪

376:デフォルトの名無しさん
04/02/04 22:02
はは、懐かしい。
初めて聴いたときには「こんな単語、一般人はわからねえだろ」と
突っ込んだ記憶がある

377:デフォルトの名無しさん
04/02/04 22:05
オー!(感嘆
トマト(トマト見つけた
ン!(まい(美味しい

378:デフォルトの名無しさん
04/02/04 22:12
自動羊肉

379:デフォルトの名無しさん
04/02/04 22:15
もう意味がワカラン

380:デフォルトの名無しさん
04/02/05 06:38
糞スレになってまいりました

381:デフォルトの名無しさん
04/02/05 07:06
368は土下座して謝れ

382:デフォルトの名無しさん
04/02/05 11:18
>>378
どっかの(嘘)用語解説かなんかで

勝手に鍋へ飛びこむ羊のこと

って書いてあったよねぇ。


383:名無し@沢村
04/02/05 19:32
オートマトン=自動羊肉

URLリンク(hp.vector.co.jp)

384:デフォルトの名無しさん
04/02/05 22:35
うぜえバカ
URLはるなバカ
おこるぞバカ

385:名無し@沢村
04/02/05 23:16
>>384

きんたまのぉ〜おっちゃんがぁ〜くそ屁をこいた〜糞こいたぁ〜

URLリンク(hp.vector.co.jp)

386:デフォルトの名無しさん
04/02/06 00:54
つまるところx86アセンブラとDOSコールだよな、これって

387:デフォルトの名無しさん
04/02/06 05:18
コンパイラはいいとして・・・
Windowsの実行ファイルのフォーマットって解りますか・・・?
バイナリ見る限りMZっという文字が入ってるのは解るのですが・・

388:デフォルトの名無しさん
04/02/06 06:37
そういう情報は自分も知りたいんだけど、資料がなかなか集まらない。
ヘッダの構成はわかったとしても、そこにどういう値を入れるのか
はっきりしないことが多いし。

つーか、PEフォーマットとかCOFF obj形式とかの解析スレ立てない?
外部アセンブラやリンカに頼らずに自分でexeファイルを作れる様に
なる目的で。アセンブラスレとは内容的にかち合わないし。
スレタイは
「.EXEや.OBJを手作りするスレ」
とか。


389:デフォルトの名無しさん
04/02/06 06:40
>>388
「機械語プログラミング」にオブジェクトファイル形式も
入るんじゃないの?

390:名無し@沢村
04/02/06 06:52
>>387
「MZ」という文字はDOSの受け皿のことだよ。
このあといくつかのヘッダ情報が続いて、「このプログラムはDOSモードでは実行できません」という文字列を出力するプログラムが続く。
そしてその少し下の見ると多分「PE」という文字があるだろ?「PE」でない場合もあるがね。
そこからやっとPEファイル(GUIの実行ファイル)のヘッダが始まるのだよ。
つまりういんの実行ファイルはPE形式なんだ。
PE形式については、2、3日以内に、おれのサイトで全仕様を公開するから、楽しみにねぇ〜♪

URLリンク(hp.vector.co.jp)



391:デフォルトの名無しさん
04/02/06 07:08
>>388
「機械語プロ〜」だと範囲広すぎです・・
ちなみにインストラクションコード手書するとかが目的なわけじゃなく、
(コードの手書きは資料も揃ってるしそんなに難解でもない、)

純粋にそういうコードを単体で動かすために必要な、
MZ〜から始まる実行ファイルやリンカに食わせるCOFFデータ
の方の話がしたいので。


392:デフォルトの名無しさん
04/02/06 07:11
>>391
ここでは駄目。

393:デフォルトの名無しさん
04/02/06 07:13
binutilsのソースを読めばいいじゃん。
ただの単発質問スレだろう、それじゃ。

394:デフォルトの名無しさん
04/02/06 07:20
>>393
GNUのクソコードを読む暇はさすがにないと思うぜ(w


395:デフォルトの名無しさん
04/02/06 07:24
>>394
殆どこの板を使った事のないド素人はすっこんでろ

396:デフォルトの名無しさん
04/02/06 07:26
exeの構成
----------------------
DOS 2.0 Section
----------------------
PE Header
----------------------
Section Headers
----------------------
Image Pages
----------------------


397:デフォルトの名無しさん
04/02/06 07:28
coffの構成
----------------------
MS COFF Header
----------------------
Section Headers
----------------------
Image Pages
----------------------

398:デフォルトの名無しさん
04/02/06 07:31
>>387 >>388
ここは見ての通り厨の溜まり場なので、
とりあえず↓に移動して聞いたほうがよいかと

機械語なら俺に質問しろ!
スレリンク(tech板)


399:デフォルトの名無しさん
04/02/06 07:49
Linkers & Loaders なんかでちょっと書いてあったかなー。
でもあれは広く浅くだから大して参考にならないか。
日本語で読めるものとしてはただ一つと言っていいソッチ方面への入門書だけど。

PEの資料へのリンク↓
URLリンク(wiki.osdev.info)

ってか、沢村がマトモな事言ってるのにスルーされてて笑ったw

>>390
がんがれー。
英文丸写しでなく日本語のを頼むぞ!

400:デフォルトの名無しさん
04/02/06 08:36
こっちのスレも使える。
Linker && Loader
スレリンク(tech板)

401:デフォルトの名無しさん
04/02/06 12:46
MSによるPEフォーマット仕様書(日本語)
URLリンク(www.interq.or.jp)

402:デフォルトの名無しさん
04/02/06 13:16
>>401
げ、こんなページがあったとは・・・

403:デフォルトの名無しさん
04/02/06 14:26
どっからこんなもんを。
>>401すげー。

以前はMSDN Onlineで公開されてたのか?

404:デフォルトの名無しさん
04/02/06 15:31
>>401
初めてみたぞ。 GJ!


405:デフォルトの名無しさん
04/02/06 17:26
ていうか普通にMSDNに日本語資料あるし

406:デフォルトの名無しさん
04/02/06 17:46
貧乏人にはMSDNなんて読めねえと思いますが

407:デフォルトの名無しさん
04/02/06 18:02
貧乏人向けMSDN
URLリンク(www.microsoft.com)


408:デフォルトの名無しさん
04/02/06 18:04
おまいらどうでもいいけどスレ違いですよ

409:デフォルトの名無しさん
04/02/06 18:28
今までの糞レスに比べたらだいぶマシだろうが(w

410:デフォルトの名無しさん
04/02/06 18:31
そして誰もいなくなった・・・

411:デフォルトの名無しさん
04/02/06 18:43
>>407
そこは知ってますが、
どうやっても>>401の様な情報には辿りつかなかったです・・

412:デフォルトの名無しさん
04/02/06 19:16
日本語MSDN Onlineにはその情報無いね

413:デフォルトの名無しさん
04/02/06 19:31
イエロー人種にはあえて多くを教えないとか
差別されてるんじゃないか?(w

414:デフォルトの名無しさん
04/02/06 19:32
いや、MSDN買えってことだろ

415:デフォルトの名無しさん
04/02/06 19:34
人種制限か。
アメ公ならやりそうな事だな。

416:デフォルトの名無しさん
04/02/06 21:48
単にMSKKが無能揃いなだけだろ。>>413-415を否定する根拠もないがな。

417:デフォルトの名無しさん
04/02/06 22:53
字句解析
文字をハッシュで調べる
・変数、関数名、キーワードを判別
ハッシュのない場合
・数値
・変数名
・関数名
をSwitch分で単語に区切る


構文解析
区切った単語を木で別ける
キーワード文(IF文等が正しいか評価する)

意味解析
木で別けた文を
計算式、評価式が正しいか・・・

目的語の変換
・Data
・PRORAM
 ・RPOC
  引数
   StackPointを設定する
  戻り値(相対的
  返り値(相対的)
・相対的なラベルを設定する

リンカ
・関数
・グローバル変数
・相対的なラベルを絶対値にする

418:デフォルトの名無しさん
04/02/07 02:52
独り言はスルーか。

419:デフォルトの名無しさん
04/02/07 02:59
GCC frontend弄ってる人いない?

420:名無し@沢村
04/02/07 21:13
おい、おまーら聞け、おれのマシン語のサイトにPEフォーマットの仕様をUPしたからな。
恐ろしすぎるぞ!!おまーら↓

URLリンク(hp.vector.co.jp)


421:デフォルトの名無しさん
04/02/08 11:50
むしろlibelfの使い方が知りたい。

422:デフォルトの名無しさん
04/02/09 00:52
質問させてください。
LLとLRの解析処理の違いは何となく理解できたのですが、
記述能力という面でどういった違いがあるのでしょうか?
javaとかって(LA)LRでないと記述できないみたいな事も
聞いたことがあるけど、これってLLでは記述できないって事で
しょうか。


423:デフォルトの名無しさん
04/02/09 01:38
>>422
LL(1)で書けるかどうかはわかりませんが、
ANTLRというパーサー生成系で書かれたJavaの文法がありますから
LL(k)で記述可能なのは確かです。




424:デフォルトの名無しさん
04/02/09 07:50
>>420
無駄ではなーい。
乙。
各ページにTOPへのリンク付けて、ロボット検索でどっかのページへ直接着いた時にも
他のページへ辿れるようにしとけー。

425:デフォルトの名無しさん
04/02/09 13:27
>>423
ANT"LR"ってLR系かと思い込んでました。
LL(k)だったんですね。ありがとうございました。



426:デフォルトの名無しさん
04/02/11 22:07
一般的なコンパイラやスクリプトでは、
yacc&lexのソースコードは何行ぐらいになりますか?


427:デフォルトの名無しさん
04/02/11 22:18
千差万別。

428:デフォルトの名無しさん
04/02/12 00:05
いきなり質問すみません。
以下のコードを最適化(局所的に?)するとどーなるんですか?
低レベルかもしれませんが私にはさっぱりです。

for(i = 0; i < 100; i++)
  a[i] = b[i] * c[k]−b[i];


429:デフォルトの名無しさん
04/02/12 00:07
とりあえずstrength-reduceだな

430:デフォルトの名無しさん
04/02/12 00:41
>>428
c[k]がループ不変なので外に出す。

もっと気合いがはいってるコンパイラなら、
a[i]=b[i]*(c[k]-1)
に変換したあと (c[k]-1)をループ外にくくり出すくらいはやるかな?
そしてinduction variableを消す。

ck_1 = c[k] - 1;
ap = a; bp = b;
for (i = 0; i < 100; i++) {
 *ap = *bp * ck_1;
 ap++; bp++;
}

あとはループunrollingとかforをdo-whileにおきかえるとか。


431:デフォルトの名無しさん
04/02/12 01:03
>>426
手元にあるANSI Cのyaccによる定義。ソースが766行(宣言部と文法定義のみ)。
終端記号、還元規則の数などは:

83 terminal symbols
80 nonterminal symbols
224 productions
364 states

フリーな言語処理系はたくさんあるから、入手して眺めてみては?


432:デフォルトの名無しさん
04/02/12 01:06
>>430
c[k] が定数となるのは a と c が重なっていない場合のみ
なので、無条件にループ外に追い出すことはできない。

仮に c[k] がループ不変であるとすると、教科書的には
これが最適ではないかな。ただし、ターゲット CPU に
とって、最速かどうかは別の話だが。

ck_1 = c[k] - 1;
for (ap = a, bp = b, ae = a + 100; ap < ae; ap++, bp++)
 *ap = *bp * ck_1;

433:428
04/02/12 01:17
>>430
ありがとうございます。
たぶん気合はいってないコンパイラなんでc[k]がループ不変だから外に出すってことは

t=c[k];
for(i = 0; i < 100; i++){
  a[i] = b[i] * t−b[i];
}

これでOKですか?




434:デフォルトの名無しさん
04/02/12 01:32
↑…よく読め…あと式に全角使わない (´・ω・`)

t=c[k]; → t=c[k] - 1;
a[i] = b[i] * t−b[i]; → a[i] = b[i] * t;



435:デフォルトの名無しさん
04/02/12 01:40
COFFの仕様の日本語のドキュメントってどこにある?

436:430
04/02/12 02:32
>>432
おお、そうですね。aliase問題をすっかり忘れていました。


437:デフォルトの名無しさん
04/02/12 02:40
>>435
タイミング的にD言語スレの人だよな?
どっちでもスレ違いになっちゃうけど、
とりあえず向こうにレスしておいたYO。

438:Amazon.co.jp よりお知らせ
04/02/12 02:58
誠に申し訳ございませんが、大変残念なご報告があります。お客様のご注文内容のうち、
以下の商品については入手できないことが判明いたしました。

Alfred V. Aho (著), その他 "21st Century Compilers"

お客様にこの商品をお届けできる見込みでしたが、現時点ではどの仕入先
からも入手できないことが判明いたしました。お客様のご期待に背くお知らせ
となりますと共に、お客様にご迷惑をおかけしたことをお詫びいたします。

ガ━(゚Д゚;)━ソ!


439:デフォルトの名無しさん
04/02/12 08:15
ワラタ

440:デフォルトの名無しさん
04/02/12 13:36
>>438
注文しなおせw
今はちゃんと「予約する」になってるから。

441:デフォルトの名無しさん
04/02/12 13:39
駄目元で黒猫にも頼んでみたら
絶版モノでも結構しつこく在庫捜してくれたよ>猫


442:デフォルトの名無しさん
04/02/12 15:12
>>441
いや、絶版じゃなくて「まだ出版されてない」本なんです。

>>440
2004年8月1日に伸びてますね。気長に待つしかないか。


443:デフォルトの名無しさん
04/02/12 17:03
parrotの追っかけをやってる人はいませんか?

444:デフォルトの名無しさん
04/02/12 17:08
2005年1月に延びましたよ…。残念ながら。
URLリンク(www.aw-bc.com)

ISBN: 0-321-13143-6
Publisher: Addison-Wesley
Copyright: 2006

となっているのは2006年まで延期するという布石かな

445:デフォルトの名無しさん
04/02/12 17:24
だーーーなんじゃそら。
ホントに出版されるんだろうなあ・・・

446:デフォルトの名無しさん
04/02/12 17:43
クラスってどうやって実装すりゃいいの?関数は
わかるんだけどクラスがさっぱりわからん

447:デフォルトの名無しさん
04/02/12 18:56
ああ?

448:デフォルトの名無しさん
04/02/12 20:35
>>444
ガ━━ΣΣ(゚Д゚;)━━ン

449:デフォルトの名無しさん
04/02/12 23:29
yacc&lexは知らないけど、
java.io.StreamTokenizerは便利だと思った。
URLリンク(java.sun.com)

450:デフォルトの名無しさん
04/02/12 23:42
Cライブラリにもこういったtokenizerはあるよな
自作する人もそれなりに居るだろう
で、それに満足できなくなったらlexに進むってわけだ

451:デフォルトの名無しさん
04/02/12 23:45
strtok は作りがよろしくないからねえ。

452:デフォルトの名無しさん
04/02/13 06:52
>>446
vptrで検索。

453:デフォルトの名無しさん
04/02/13 13:19
Boost.Spirit
URLリンク(spirit.sourceforge.net)

いい時代だ

454:デフォルトの名無しさん
04/02/13 13:57
そこのc.zipって、プリプロセッサ入ってないんだから
full ANSI C とはとても呼べたもんではないよなあ
Cはプリプロセッサがないと魅力半減だし

455:デフォルトの名無しさん
04/02/13 14:53
>>454
ラッパーのスクリプトでも書けばいいんじゃないの?

456:デフォルトの名無しさん
04/02/13 15:14
>>454
つうか、プリプロセッサは
あるものを使えばいいんじゃないの。
プリプロセッサまで自作する意味ってある?

457:デフォルトの名無しさん
04/02/13 15:15
>>455
書き方わかんないから
最後まで責任とってほしいよ
なんなんだよあの中途半端さは

458:デフォルトの名無しさん
04/02/13 15:16
>>456
馬鹿かおめえは
んなこといったらc.zipの存在そのものが
まるっきり無意味じゃねえかよ

459:デフォルトの名無しさん
04/02/13 15:36
>>458
プ
本気でそう思ってるの?

460:デフォルトの名無しさん
04/02/13 16:34
>>454 同じページにwaveがあるだろうに。


461:デフォルトの名無しさん
04/02/13 16:53
>>459
ほんとに馬鹿まるだしだな
哀れでしょうがないぞ
頭大丈夫かい?

>>460
何なのか説明しろよ。

462:デフォルトの名無しさん
04/02/13 17:26
>>461
Spirit で記述された C/C++ プリプロセッサ。
つーか、ドキュメント嫁

463:デフォルトの名無しさん
04/02/13 18:20
spilitだかsplitだか非常にまぎらわしい

464:デフォルトの名無しさん
04/02/13 18:31
と思ったらspiritか
漏れの目が腐ってるだけでした

465:デフォルトの名無しさん
04/02/13 19:18
boostのソースは吐き気がするよ。
これほんとに使ってる奴いるの?

466:デフォルトの名無しさん
04/02/13 19:21
そう思うよな、でもどうやら仕事じゃあ使えないと話にならないらしい。
boostとかLokiを採用してるプロジェクトなんて見たこと無いんだけどさ。

467:デフォルトの名無しさん
04/02/13 20:02
人間には言語の限界へと向かって突進しようとする衝動がある

                     ウィトゲンシュタイン

468:デフォルトの名無しさん
04/02/13 20:16
boost含んだコード納品するなんて機会あるんか?

469:デフォルトの名無しさん
04/02/13 20:45
この人等はboostで何かいやな思いしたのかな。
boost知らなくてバカにされたとか?

470:デフォルトの名無しさん
04/02/13 21:07
まわりがboostの話ばかりしててついて行けなくてストレス溜まったとかな

471:デフォルトの名無しさん
04/02/13 21:18
そんなあなたには Let's boost がおすすめ。
URLリンク(www.kmonos.net)
日本語解説でわかりやすいよ。

ここみて必要性を感じなければ使わなければ良いだけの話。
ましてや他の人がboostを使ったコードを納品する機会が
あるかどうかなんて知らなくていいでしょ。

472:デフォルトの名無しさん
04/02/13 21:34
boostにはiostreamクラスの演算子オーバーロードのような
構文そのものの意味を変えてコーディングするスタイルを
強要するライブラリ(spiritとか)があるから
なんかあんまり好きになれない。

473:デフォルトの名無しさん
04/02/13 21:43
>>472
基本的にはやりすぎだと思うけど、boost::filesystem の
パス結合演算子を「/」にした辺りはなかなか面白いと思ったり。

Boost っていろいろごたまぜだから、
俺は気に入ったところだけつまみ食いという感じ。

474:デフォルトの名無しさん
04/02/13 21:50
おまえらスレ違い

475:デフォルトの名無しさん
04/02/13 22:04
すまん、ナチュラルにテンプレートスレかとおもてたよ。

476:デフォルトの名無しさん
04/02/13 22:04
すまん、ナチュラルにテンプレートスレかとおもてたよ。

477:デフォルトの名無しさん
04/02/14 17:09
>>431
ご親切にありがとうござい居ます。
やはり、かなりの数のシンボルが有るんですね。


478:デフォルトの名無しさん
04/02/14 21:24
lispでは新しい構文を定義するのは普通だけど

479:デフォルトの名無しさん
04/02/15 21:03
lisp はクソ。マクロは可読性を下げてユーザビリティがイクナイ。
) より end のほうがユーザビリティがイイんだよ。ボケが。

480:デフォルトの名無しさん
04/02/15 21:12
よそでやれ
どうしても此処でやりたきゃ、可読性の悪い理由書け >>479
そうすりゃ、言語仕様やらの話題になる。

481:デフォルトの名無しさん
04/02/15 21:26
コンパイラってアセンブラ吐く所まで作れば良いの?
それともオブジェクトコード作ってリンクする所まで?

482:デフォルトの名無しさん
04/02/15 21:26
言語設計と言語処理系の話は分けるべき?
それとも不可分と考えるべき?

483:デフォルトの名無しさん
04/02/15 21:57
言語によってはコンパイラだけで完結出来なかったりするんだよなー。

484:デフォルトの名無しさん
04/02/15 22:04
J*V*厨の香りがプンプンするな

485:デフォルトの名無しさん
04/02/15 22:12
そなん?
C++とかコンパイラだけしか見ないって条件だと殆ど無理じゃね?

486:デフォルトの名無しさん
04/02/15 23:55
>>481
アセンブラを呼出してオブジェクトにすればいい。
ただし権利関係やソースのフォーマット等で既存のが使えない場合は
アセンブラも自前で作らなきゃならない場合も多い。


487:デフォルトの名無しさん
04/02/16 06:41
lispはあれでいいんだよ。読みやすさをちょっと犠牲にしただけで
物凄いメリットが生まれたんだから。

488:デフォルトの名無しさん
04/02/16 13:01
ゲーデルの証明が理解出来なかったカッコ嫌いLISP嫌い厨


489:488
04/02/16 13:19


490:デフォルトの名無しさん
04/02/16 14:07
>>488-489
ワロタ

491:デフォルトの名無しさん
04/02/16 14:37
Lispさんは悪くない。
Paul Grahamの文章を読んで勘違いしたLisp厨が悪い。

つかPaulはさっさとArcを世に問えよ、と。

492:デフォルトの名無しさん
04/02/17 14:42
)とendを置き換えるプリプロセッサ(sed使えば一行で書けるなw)を使えば糸冬了(<-何故か変換できる)。

493:デフォルトの名無しさん
04/02/17 18:01
endだらけになってもっと悲惨

494:デフォルトの名無しさん
04/02/17 19:59
( )を{ }に置き換えたらC言語っぽく見えますか?

495:デフォルトの名無しさん
04/02/17 23:02
Lispスレで聞いてくれ。

496:デフォルトの名無しさん
04/02/17 23:31
>>494
curl という(ダウンローダじゃないよ)のがあったな。確か昔スレたったと思う。
Arc は使ってみたいね。[] 萌え。Lisp は適度に [] を入れれば結構読み易くなりそうな
気がするんで期待してます。

いつか Scheme コンパイラ作ってみたいな。

497:デフォルトの名無しさん
04/02/18 13:37
俺は()&前置記法で統一されているのがベストと思う。

498:名無し@沢村
04/02/18 22:06
おれのマシン語のサイトに掲示板ができたぞ!
ほんにおまいら〜♪

URLリンク(hp.vector.co.jp)


499:デフォルトの名無しさん
04/02/19 01:58
既出だけど、TinyCC って面白そう。

URLリンク(fabrice.bellard.free.fr)
URLリンク(2.csx.jp)

500:デフォルトの名無しさん
04/02/20 02:46
500ゲト。

URLリンク(i.loveruby.net)
ついに来た。

501:デフォルトの名無しさん
04/02/22 08:31
URLリンク(home.in.tum.de)
URLリンク(www.cobalt.co.jp)

just a memo.

502:デフォルトの名無しさん
04/02/26 15:07
クラスベースよりプロトタイプベースの方が実装ラクだな
メタメタしなくていいしw

503:デフォルトの名無しさん
04/02/26 20:38
スクリプトで、 printfとかを実装しようとすると、
たんなるラッパーでは通用しませんよね?

やはり、これって自前で実装しなければならないんでしょうか?


504:デフォルトの名無しさん
04/02/26 20:41
いいえ

505:デフォルトの名無しさん
04/02/26 20:57
Perlは色んな関数自前で用意することが多いよな。

506:デフォルトの名無しさん
04/02/26 21:06
>>503
可変長引数の処理ができれば
実装しなくてもvprintfかvsprintfでどうにかなりそうだけど

507:デフォルトの名無しさん
04/02/26 21:12
>>506
C言語の仕様だけで任意の可変長引数を作り出すのってできたっけ?
スタック弄らないとだめ?

508:デフォルトの名無しさん
04/02/26 21:15
>>507
できる。stdarg.hの説明でも見れ。

509:デフォルトの名無しさん
04/02/26 21:24
>>508
URLリンク(www.catnet.ne.jp)
には出来ないって書いてあるみたいだけど?

なんか間違ってる?

510:デフォルトの名無しさん
04/02/26 21:30
>>509
あー、そっか。
実行時は確かにできないや。スマソ。
素直にスタック弄ってくらさい。

511:デフォルトの名無しさん
04/02/26 22:06
やはり出来んみたいね!
スタックいじるのって禁じ手かも。


512:デフォルトの名無しさん
04/02/26 22:10
>>509
15.13あたりかな?
やはり、printfのwrapperは無理みたい。


513:デフォルトの名無しさん
04/02/26 22:11
移植性考えればスタック弄るのは止めた方が良いと思う。

514:デフォルトの名無しさん
04/02/26 22:28
移植性つってもpushの順番程度の違いでしかないがなあ

515:デフォルトの名無しさん
04/02/26 22:40
スタックとは限らない。

516:デフォルトの名無しさん
04/02/26 22:49
お遊びでつくるプログラムに、移植性の必要は皆無。

517:デフォルトの名無しさん
04/02/26 22:49
>>503
スクリプト言語での1回のprintf呼びだしを、
1回のCのprintf関数呼びだしで実現しようとすると大変だが、
引数をひとつずつ処理して、何度もprintf呼べばいいんでない?



518:デフォルトの名無しさん
04/02/27 08:06
>>517
フォーマットを解析する必要があるので、
移植性は優れるが手間は余計にかかると思われ。


519:デフォルトの名無しさん
04/02/27 11:33
yacc/lex,bison/flexの話題もこっちでOKですか?

520:デフォルトの名無しさん
04/02/27 13:35
>>519
OK


521:デフォルトの名無しさん
04/02/27 18:43
Windowsで汎用的なスクリプト用途考えると、
VBScriptみたいにCOM扱えないと話にならない気がする。
と、VBScript書いてて思った。
でもCOM扱うの面倒なんだよな。
自作の言語をWSHに対応させたって人いる?
たぶんえらい手間掛かってると思うけど。

522:デフォルトの名無しさん
04/02/27 21:23
させようとしたことはあります。
が、IE中でscriptタグで動かすと凍るのであきらめた。
コンソールからだと、WScript.CreateObjectが上手く行く時と行かない時があったような、記憶はある。
だいぶ前の話です。

523:デフォルトの名無しさん
04/02/28 06:12
DMonkeyってwsh対応してなかったっけ

524:デフォルトの名無しさん
04/02/28 13:46
>>517
Good Idea!

ただし、scanfには使えない可能性が...


525:デフォルトの名無しさん
04/02/28 13:52
直接pushで積んだ方が楽だし変な不具合もない。
なんつうか、潔さ?

526:デフォルトの名無しさん
04/02/28 21:47
>>525
GCCでもできますか?


527:デフォルトの名無しさん
04/02/28 22:12
できますが?

528:デフォルトの名無しさん
04/02/28 23:17
>>524
format I/Oの処理は、printf(3)に下請させる場合でも、
format指定と引数の方が合ってるかどうかなど、
適切なチェックを行わなければ、処理系の状態がおかしくなってしまうので、(e.g. core dump)
言語の仕様として、C風の書式処理じゃなくて、C++風にした方がいい。


529:デフォルトの名無しさん
04/02/29 00:06
C++形式はアホとしかいいようがありませんな。
言語側の都合というか。

530:デフォルトの名無しさん
04/02/29 00:45
>>527
どのように実現されるのでしょうか?
もしよろしければ、HPアドレス等お教え下さい。


531:sage
04/02/29 00:47
>>529
どのあたりがアフォですかね?


532:デフォルトの名無しさん
04/02/29 00:53
>>531
一目で書式がわからない時点で相当のアホかと。

533:527
04/02/29 00:55
>>530
インラインアセンブラ使えよ。
それだけだよ。
何を迷ってるんだが。

534:デフォルトの名無しさん
04/02/29 01:40
x86と68kとarmとppcとG3〜G5くらいまで対応すれば普通の人は困らないかな?

535:デフォルトの名無しさん
04/02/29 12:38
SPARCO...

536:デフォルトの名無しさん
04/02/29 14:14
今ドラゴンブックを読んでいるんですが、
LRの構文解析は、yacc等のツールを使わないと作成できないんですか?
手動で書くと非常にめんどくさいとかいうのをどこかで読んだ気がするんですが、
なぜですか?

537:デフォルトの名無しさん
04/02/29 14:23
なぜですかって、自分で書いてみろよ(w
アホか?

538:536
04/02/29 14:28
>>537

いや、自分、まだそんなレベルじゃないので。
構文解析などはまったくわからず、ドラゴンブックの最初の一章を読んでいる途中です。

539:デフォルトの名無しさん
04/02/29 14:53
プログラム書けない情報系の学生

540:536
04/02/29 14:56
>>539
情報系ではありません。

ただし、学生ではあります。

(プログラム書けないってのは、まあ、当たらずとも遠からじと言えるかも)



541:デフォルトの名無しさん
04/02/29 15:04
>>536
まだいたのか(w
「めんどくさい」ってことは「作成できる」ってことだろ。
聞いた話とか鵜呑みにするんじゃなくて、
こういうのは自主的に確かめるとかしないと身にならないよ。

542:デフォルトの名無しさん
04/02/29 15:21
コンパイラのようなこんな人間もいるのだな。

543:デフォルトの名無しさん
04/02/29 15:32
クリリンの事かぁー!

544:デフォルトの名無しさん
04/02/29 17:48
>>536
最後まで読んでから聞け
社会に出てから苦労するぞ


545:デフォルトの名無しさん
04/02/29 21:42
allocaってどうやって実装してるの?
引数に渡す値って可変なんでしょ?
後付けでadd esp, nとかわかんの?
ソース嫁とかなしでおながいします。
サムイので

546:デフォルトの名無しさん
04/02/29 21:56
ソース嫁

547:デフォルトの名無しさん
04/02/29 22:07
サム・・・

548:デフォルトの名無しさん
04/02/29 22:11
gccだとbuiltin_allocaでinline風の処理。

549:デフォルトの名無しさん
04/02/29 22:25
どうやっても何もねーし
スタックポインタ動かす→そのアドレス返す、で終わりだろ

550:デフォルトの名無しさん
04/02/29 22:40
これだからソース嫁ない香具師は・・・・

551:デフォルトの名無しさん
04/02/29 22:54
>>545
allocaはコンパイラの組み込み関数です。

コンパイラの生成するコードが読み切れる―例えばauto変数の参照にはフレー
ムポインタのみを使い、SPは関数出口でsp <- fpのように設定して元に戻すま
で参照しない―なら、後付けで実装もできます。

でも最適化のレベルの高いコンパイラでは危険ですね。


552:デフォルトの名無しさん
04/03/01 20:45
ahhoca()


553:デフォルトの名無しさん
04/03/01 20:46
>>548
ahoca?



554:デフォルトの名無しさん
04/03/01 20:50
assoca!

555:デフォルトの名無しさん
04/03/01 20:55
>>554
asoccaじゃねーの?

556:デフォルトの名無しさん
04/03/01 23:05
alloca(n)を
sub esp, n
mov eax, esp
に展開してやればいいの?


最後に
mov esp, ebp
pop ebp
する関数なら大丈夫ってこと?


557:デフォルトの名無しさん
04/03/02 00:53
>>556
それだと危険だね。Win32だと単純にスタックポインタをいじるだけだと、
2ページ以上境界をまたいだ時に例外飛ぶよ。
他のOSは実験してないからしらん。

確か1ページずつ動かしてくコードになってたはず>_alloca()
隣のページを触った時に初めてメモリ確保するんだっけな?

558:デフォルトの名無しさん
04/03/02 18:56
>>557
え、ページなんて概念があったんですか。
ちなみに1ページって何バイトでしょうか?
その辺の情報で何か適当なWebリソースってありますでしょうか。

そういえば、自作の処理系でスタックから配列を確保すると、
16000バイト付近でおかしなことになるんですが、これも
ページと関係ありですか?
コンパイラ側でスタックサイズを確保するだけじゃだめなのか。

559:デフォルトの名無しさん
04/03/02 19:25
ごめん、ググったらx86の1ページは4kてわかりました。

今ためしにVC6で大きい配列確保するテストしてみたら、
ある大きさになったら密かに__chkstkっていうのを呼んでる。
ちょうど4kバイトを境に。
まいったなあこれ。
全く知らなかった。

560:デフォルトの名無しさん
04/03/02 19:37
つまり4kを超える固定配列をスタックに確保する場合は、
sub esp, 4096
の代わりに、
mov eax, 4096
call __chkstk
に書き換えなくてはいけないわけだ。
やだなあこれ・・

allocaだと+余分を計算しないといけない?
無条件で_chkstk呼べばいいのかな。

561:デフォルトの名無しさん
04/03/02 19:39
でもこれでスタック確保でおかしくなる原因がすっきりわかりました。
ありがとうございました。>557

562:558
04/03/03 02:41
いまどきのOSはスタックの割り当ては動的だからね。

最小限のサイズのみを割り当てて、スタックの次のページを
さわった瞬間にメモリ未割り当てのページフォルトが発生して、
そのタイミングで実際の仮想メモリを割り当てる実装になってる。
で、そのページフォルトを判定するのが隣接ページのみってこと。

フレーム割り当てのタイミングでサイズが決まってるのなら、
sub esp, 4096; sub esp, 4096; sub esp, 200
みたいな感じで展開しちゃってもいいと思うよ。

563:デフォルトの名無しさん
04/03/03 05:37
>>562
espの値を変えただけでは、ページを触ったことにはならないと思うが。

564:デフォルトの名無しさん
04/03/03 06:15
つーかさー、いい加減ソース見ろよ。
ページ処理をどーすればいいのかとかもわかるし。

565:デフォルトの名無しさん
04/03/03 07:36
>>558
ところで、自作の処理系ってアクティブ何とか?

566:デフォルトの名無しさん
04/03/03 12:21
やっぱりMacOSXみたいにスタックもallocしたほうが分り易いよな

567:デフォルトの名無しさん
04/03/03 18:12
>>562
名前557の間違いですか?
ちなみにCRTの_chkstkを呼ぶ様にして解決しました。
おかげで既知のバグがすべて潰せました。

>>564
557氏みたいなヒントがないとソースみてもわかんなかったよ。

>>565
アクティブ何とかの話はよくわかりませんが、
目標はネイティブ実行できるLISPっぽいCみたいな感です。

568:デフォルトの名無しさん
04/03/04 23:56
どーでもいいけど、
スタックとるahhocaって制限多すぎでない?

大きな自動変数は、普通process即氏けどな。


569:557
04/03/05 01:12
>>563
IA-32(+Win32?)の場合だとesp、ebpは明示的に参照しなくても
ポインタが指し示すだけでAccess Violation飛んだはず。
かなり前の記憶なんで確証ないけど・・・

>>568
用途が違う。大きなサイズが必要ならHeapを使えばいい。

関数が呼び出されるまで厳密なサイズはわからないが、
スタック食いつぶすほどのサイズにはなりえない場合とか、
シグナルハンドラから突如longjmp()されようが、絶対に
メモリリークしたくない場合などに使える。


570:デフォルトの名無しさん
04/03/05 19:07
>>569
> かなり前の記憶なんで確証ないけど・・・
明らかに記憶違い。

$ uname -ms
CYGWIN_NT-5.0 i686

$ cat a.c
#include <stdio.h>
static void *
badstack()
{
    __asm__("mov %esp, %edx; sub $0x100000, %esp; mov %esp, %eax; mov %edx, %esp");
}

int main()
{
    char *p = badstack();
    printf("%p\n", p);
    fflush(stdout);
    printf("%x\n", *p);
    return 0;
}

$ gcc a.c

$ ./a.exe
0x12ef18
Segmentation fault (core dumped)


571:デフォルトの名無しさん
04/03/05 19:40
>>570
linuxでもちょっと大きな奴渡すとすぐにsegfault!です


572:558
04/03/05 20:39
>>571
自分も最初そう思ったけど、
10分の1の0x10000にしても落ちたから違うと思う。
ポインタ変えただけじゃ駄目なんじゃないかな。
_chkstkのまわりくどいソースとあわせて考えると。

573:デフォルトの名無しさん
04/03/05 22:14
>>571
大小は関係ない。
> esp、ebpは明示的に参照しなくても
> ポインタが指し示すだけでAccess Violation飛んだはず。
というのは誤り。espを変更しただけでは落ちないで、参照したときに落ちる。

>>570のテスト内容ちゃんと見た?

574:デフォルトの名無しさん
04/03/05 22:46
>>570
つーかそれ関数すぐ戻ってるから、プログラム的に
スタックが有効かどうかというテストにはならんのでは?
badstack() {
 char baduse[0x100000];
 return baduse;
}
と同じことだし・・

575:デフォルトの名無しさん
04/03/05 23:15
あー勘違いした

576:デフォルトの名無しさん
04/03/05 23:17
なので、>>571が正解!


577:545
04/03/09 22:36
alloca実装でけたよ
疲れた

578:デフォルトの名無しさん
04/03/20 13:15
Windowsで使えるlexってないんでしょうか?
Cygwin上でうごかすのではなく、純粋にWindows用として。

579:デフォルトの名無しさん
04/03/20 13:33
URLリンク(sourceforge.net)


580:578
04/03/20 14:04
>579
ありがとう。
でも俺がいうのもなんだが甘やかしすぎでは。

581:デフォルトの名無しさん
04/03/20 18:02
>>580
何だそりゃw

582:デフォルトの名無しさん
04/03/20 19:30
>>578
こんなんもあるけどな
URLリンク(www.vector.co.jp)

583:デフォルトの名無しさん
04/03/20 20:18
579は鉄オタに優しいNHKみたいですね<あまやかしすぎ

584:デフォルトの名無しさん
04/03/20 21:46
おれはNHK料金払ってない

585:デフォルトの名無しさん
04/03/20 21:53
>>584
同じく、見てないし。

586:デフォルトの名無しさん
04/03/20 23:24
つーかNHKあまやかしすぎ

587:デフォルトの名無しさん
04/03/23 00:12
教育テレビで歌のお姉さんが胸もまれてたよ。

588:デフォルトの名無しさん
04/03/23 07:16
なんと。

589:デフォルトの名無しさん
04/04/07 19:36
yacc か bison のサンプル集みたいなサイトご存知ないですか?
ちょっと、書籍で勉強してるんですがサンプルが少なくて困ってます。


590:名無し@沢村
04/04/07 22:06
おまいらよ、超便利マシン語エディタ「Visual E++」ができたから見ちみれ!!
プログラム言語の歴史が変わった歴史的瞬間だ。

URLリンク(hp.vector.co.jp)



次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4964日前に更新/226 KB
担当:undef