1 名前:デフォルトの名無しさん mailto:sage [2014/04/12(土) 13:40:51.05 ID:UapBJj1i] プログラミングに関する雑談スレッドです。 ■前スレ プログラミング雑談スレ♯+ toro.2ch.net/test/read.cgi/tech/1391921013/ ■前前スレ プログラミング雑談スレ+++ toro.2ch.net/test/read.cgi/tech/1385298215/ ■前前前スレ プログラミング雑談スレpart256 toro.2ch.net/test/read.cgi/tech/1389873912/ ■前前前前スレ プログラミング雑談スレ++ toro.2ch.net/test/read.cgi/tech/1384422943/ ■前前前前前スレ プログラミング雑談スレ toro.2ch.net/test/read.cgi/tech/1363792124/
321 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 16:47:15.42 ID:Ml/OqnCm] 組込み屋がクソ、というか、 国内の某メーカーがいつまでも標準への準拠度が低い処理系を公然と 罷り通らせていたせいで、組込み屋の多くに、標準仕様を軽視する悪癖が 広まってしまった。
322 名前:デフォルトの名無しさん [2014/05/17(土) 16:48:52.25 ID:u52wQyR3] >>318 初心者なんだろうけど それさえ理解してないお前も大概 カーネルなんかがvoid mainで良い理由は理解してんの? 何十年間も繰り返された議論でほんと今更なんだから
323 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 16:51:09.00 ID:WaMy5XYX] にわかなやつほど枝葉末節に食いつく。 今となって思うのは、入門書なんざどれも差がないこと。 結局は規格をひもとくなり、設計に悩んだり、 言語のイディオムを他人のコードから学んだり、 そうやってプログラマとして一人前になっていく。
324 名前:デフォルトの名無しさん [2014/05/17(土) 16:51:11.06 ID:u52wQyR3] Cは高級言語じゃないから、わざわざ機械語が見えやすい言語にさせてんだよ 記述方法も全部そういうスタイルで省略しない だから効率的なプログラミングやりたいならC言語とかやってないで、高級言語触れっての
325 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 17:00:45.72 ID:YyEzaSn4] 移植性? 保守性? 何それおいしいの? という世界はまだまだ存在する 規格やら標準やらに守ってもらいたい奴は近寄らなければ済む
326 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 17:07:35.10 ID:wm2r1TSW] >>325 > という世界はまだまだ存在する たとえば?
327 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 17:13:18.62 ID:R4olBPWV] >>321 いやお前、そもそもmain関数がデフォでintを返すのはUNIXの伝統だから…… (K&R時代じゃ出鱈目だったのを、ANSI規格時にOSに返すエラーコードとして 使うように統一。ただ、C++やC99以降だと自動で「return 0;」を付け足す仕様) 参考:www.6809.net/tenk/html/cgokai/int_main.htm oshiete.goo.ne.jp/qa/2445252.html
328 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 17:35:12.16 ID:/wPndJU8] >>325 保守性はともかく、移植性についてはむしろ現実は逆で そんなものを意識しなければならない世界の方が少数派。 >>321 そういうの訓詁学って言うんだよ。 そもそも組み込み系では、MCUのアーキテクチャー上、標準に準拠なんかしたくても できない場合が多い。
329 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 18:00:20.59 ID:ozqnPmum] そもそもフリースタンディング環境の規格があるの知ってんのか
330 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 18:17:49.99 ID:Ml/OqnCm] C99でフリースタンディング環境への考慮が追加されたことすら知らずに、 「MCUのアーキテクチャー上、標準に準拠なんかしたくてもできない場合が多い。」 とかでかい口を叩くのが正義、なのがニッポンの組込み屋。 一度終わらせる以外無いだろうね。再生できるかは知らんけど。
331 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 18:31:00.87 ID:/wPndJU8] >>329-330 組み込み用のMCUの事を何も知らずに馬鹿じゃないの。 たとえばCでは複数のアドレス空間を持つアーキテクチャーは想定されてないから その種のMCU用のCに標準準拠を強制することはどうやっても不可能。 そもそもプログラミング言語は最終製品を完成させるためのただの道具の一つに過ぎない。 無知や怠惰で標準に従わないのは愚かだが、それを言うなら単なる手段に固執して 最終目的を忘れるのも愚かだ。
332 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 18:32:39.51 ID:YyEzaSn4] >>330 保守性を考慮せず過去資産を投げ捨てて一からやろうとする実例
333 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 18:37:13.89 ID:ozqnPmum] >>331 お前になんぞ言ってない お前の上に言ってんだよ
334 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 19:04:48.46 ID:Ml/OqnCm] どんだけ頑張って、標準ではアドレスの概念がわざと曖昧にされていることか...
335 名前:片山博文MZバグロボ ◆T6xkBnTXz7B0 mailto:sage [2014/05/17(土) 19:15:30.69 ID:n6eabQOq] 仮想環境のUbuntuにclang++インストール中だよ
336 名前:片山博文MZバグロボ ◆T6xkBnTXz7B0 mailto:sage [2014/05/17(土) 19:20:00.30 ID:n6eabQOq] 次はboostインストールなのだ。 sudo apt-get install libboost-all-dev
337 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 19:24:01.30 ID:+1qzqK6H] 言語仕様的にはmainに戻り値を持たせてOSへのエラーコードにしようぜーってのが なんか変な盲腸みたいでものすげぇ気持ち悪いってのはわかるw
338 名前:デフォルトの名無しさん [2014/05/17(土) 19:47:35.96 ID:hF3EPyEL] WinMainなんて許せない!!
339 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 20:04:01.98 ID:il12OChV] アプリやサービスを作るときにいい名前が思いつかない
340 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 20:17:29.22 ID:te2IP1pO] >>322 そもそも、カーネルに main があるのか? >>318 ISO/IEC 9899:1999 5.1.2.2.1 or in some other implementation-defined manner.
341 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 20:24:26.38 ID:te2IP1pO] >>337 つ make 盲腸とはひどい言われようだ、というか最近盲腸の有用性がみなおされつつあるようだね、ま、草食動物では必須だしね それにしても「OS へのエラーコードとはいいにくいね」 OS は main の返り値をシェルに丸投げするだし、シェルもどこぞに丸投げするだけだし‥
342 名前:デフォルトの名無しさん [2014/05/17(土) 23:27:51.35 ID:yROm+Qxa] 例えば自分でOS作るとしてそこで走らせるプロセスの終了状況ってOS側に送り返してほしいだろ? 念のためにも。 そういうこと。 エラーコードっていうより殆どもう念のための戻り値 立て直すわけにもいかない古い建物の基盤部分に文句いってるのは全体見えてなさすぎ >>340 カーネルをCで書くのか? に質問変えろバカ
343 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 01:58:56.16 ID:P2EXL/Ge] >>337 意味不明。プログラムがmainで始まる以上、mainの返り値が プログラムの返り値になるのは自然
344 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 02:10:24.05 ID:wp+VXbcn] むしろそれは単なる不正終了などのエラーフラグで プログラムの返り値"じゃない"から気持ち悪いんだが… C99とかで本来の姿に戻ったのでわかるように mainを強制的にvoidじゃなくてintで宣言させてその値をシステムフラグにしよう (返り値をプログラマに自由にさせないで固定用途に決めよう!) ってのは恐ろしく筋の悪い考え方だと思うよ。
345 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 02:41:05.41 ID:P2EXL/Ge] mainの返り値は _exit(2)に渡されてプログラムの返り値になるでしょ? なんでプログラムの返り値じゃないと思うのか理解できん
346 名前:318 mailto:sage [2014/05/18(日) 03:51:44.92 ID:WdyNhwqh] 漏れの読んだ本は、PICマイコンでは代表的な、 1個250円の8ビット、PIC16F84Aマイコン mikroC コンパイラ OS無しで、絶対にwhileループから出ることはなく、 割り込み処理で、関数を実行する クロックは20MHz。4クロックごとに、タイマが1増える I/Oポートは13ビットあり、1ビットのOn/Offで、 LEDなどをOn/Offさせる
347 名前:デフォルトの名無しさん [2014/05/18(日) 04:47:56.23 ID:AOzCWWrl] スタック8段しかないから出来るだけ関数呼び出しは避ける 同じ理由で引数も出来るだけレジスタ渡し そもそもmainから根けても戻る場所が無い main() { デバイス初期化 割り込みベクタ設定 while(1){ 割り込み許可 halt } } こうなるのは必定
348 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 05:45:58.20 ID:2cYQQGni] >>342 >カーネルをCで書くのか? に質問変えろバカ え?*BSD とかのカーネル再構築をしたことないの?普通に C だったよ。
349 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 05:53:26.22 ID:2cYQQGni] >>344 main() も呼び出し元があり、それはカーネルではない 普通スタートアップルーチンにリンクされるから、スタートアップのコールに束縛されると思うよ スタートアップが int main(..) で呼んでいるなら、それにあわすしかないだけの話 まあ、歴史的に int の返り値はレジスターに割り振られてスタックを乱さないから void main() と書いてでもうまくいくんだけれども >「返り値をプログラマに自由にさせないで固定用途に決めよう」 というか固定にならざるを得ない、昔から 無論使うか使わないかは書き手の裁量
350 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 06:00:10.92 ID:d9R6JRvl] >>342 OSからみたら例外とかで強制終了するしかないのがエラーであって、 戻り値得られてる時点である種の正常終了の類だよな。 プログラムやユーザ的にはエラーなのかも知れんが、 エラーだとしてもOSに取ってどうでも良いというか。 >>346-347 「組み込みでは」って情報だけで説明十分だし蛇足かと。
351 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 06:53:16.99 ID:ghNGAN9S] ttp://andersevenrud.github.io/OS.js-v2/
352 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 07:01:24.69 ID:B6nRembq] つcrt0
353 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 08:11:08.26 ID:wp+VXbcn] >>346 しかしPICの仕様とオペコード初めて調べてみたけど これなら別にCじゃなくてアセンブラ直ででいいんじゃ…
354 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 08:37:59.29 ID:P2EXL/Ge] 「アセンブラじゃなくてC直でいい」が正しい 開発経験の無い人ってアセンブラに幻想持ってる気がする 効率がいいとか速いとか。いまどきのマイコンや開発ツールならCで済む
355 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 08:40:47.83 ID:y7sacx+K] PICはCで書くメリットほとんどないよ
356 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 08:48:09.23 ID:wp+VXbcn] >>354 いや、むしろ6502,Z80あたりのアセンブラは弄ったことがあるので PICの単純なオペコード体系とレジスタの多さに 別にファイナルファンタジーとか自分で作るんでもなきゃ こんなんだったら普通にアセンブラでせこせこ組みゃいいんじゃねぇの? って思っただけなんだが… アセンブラ見ると油汗出る人?簡単よ??
357 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 08:58:17.01 ID:P2EXL/Ge] >>356 アセンブラが難しいとかそんな話はしていない。 Cでもアセンブラでも書ける場合に、なぜアセンブラがいいと思うのか?ってことだ アセンブラの方がCよりも何かが優れてると思ってるんだろう?
358 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 09:01:59.73 ID:Pwryy1cN] >>344 ああ、もしかして、一個しか値を返せないことに不満があるのか? そんなのただ君の好みに合わないってだけじゃん。 そんな主張は、君の理想の言語とやらを作って発表してから言え。
359 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 09:29:25.95 ID:y7sacx+K] この場合つくるべきなのは言語じゃなくてOS
360 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 09:34:00.27 ID:wp+VXbcn] >>357-358 なんでID換えたの。
361 名前:デフォルトの名無しさん [2014/05/18(日) 11:56:55.94 ID:0kvX68pZ] maguro.2ch.net/test/read.cgi/pc2nanmin/1372918692/145 ↑ ↑ ↑ ↑ ↑ ↑
362 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 16:19:49.02 ID:d9R6JRvl] >>353 >>356 PICは命令セットなんかの互換性が類似ファミリ間ですら低かったりするんで、 使うPIC変える毎に使える命令やレジスタの仕様を洗い出す手間は省きたいとか。 AVRに比べ、PICの命令は人にもコンパイラにも優しくないって評価はわりと聞く。 >>357 プログラムメモリが小さいからコンパイラが冗長なコード吐くリスクを避けたいとか、 実行時間をクロック刻みで計算しながらコード書けるとか、そういう利点はあるかと。
363 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 18:54:45.50 ID:WdyNhwqh] アセンブラはCより、少し速くて、少しサイズも小さいが、 開発・保守コストは3倍かかりそう PICは安価で入手しやすく、長方形のDIPタイプのパッケージで、 電子工作に向いている >362 もしかして、アセンブラでコーディングしながら、 命令のサイクル数や実行時間まで、数えているの?
364 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 20:26:03.15 ID:wp+VXbcn] >>363 >もしかして、アセンブラでコーディングしながら、 >命令のサイクル数や実行時間まで、数えているの? ? むしろそれができるのがアセンブラの強みで "ハッカーのたのしみ"の部分じゃないの? おまけ www.amazon.co.jp/gp/aw/d/4434046683
365 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 21:19:56.21 ID:d9R6JRvl] >>363 タイミング気にするコード書く場合は当然、実行時間把握しながら書く。 タイマー使い辛い状況でソフトウェアでUART扱う場合とか、 Cコンパイラで意図しないコードになってタイミング乱されたりも嫌だし。 AVR辺りは実行時間が分かりやすいけど、PICだとどーなんだろう。 ; 今はAVRもttp://elm-chan.org/docs/avr/jitter.htmlとかで多少揺れるけど…
366 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 21:29:58.64 ID:08yv8gyX] 往々にして数えた気になってるの間違いだから構う必要なし
367 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 21:41:58.03 ID:37PUisv3] パフォーマンスのためとかそもそもアセンブラじゃないと書けない処理があるとかもあるけど、 マイコンの場合はそのマイコン用Cの変則仕様を覚えるのが面倒臭いというのも 動機としてあるよ。
368 名前:デフォルトの名無しさん [2014/05/19(月) 00:15:32.08 ID:OU6AZajW] Cよりアセンブラで書いた方が早いコードをかけるPGなんて天然記念物だから幻想見すぎなんだよな お前らも出来ないだろ いねーっつうの
369 名前:デフォルトの名無しさん [2014/05/19(月) 00:31:24.54 ID:OU6AZajW] OS自作本くらい読んでからこの手の話題に入ってくるのオススメ 幼稚なレスに幼稚なバカがつられて入門書知識以下のゴミスレと化す
370 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 00:40:34.87 ID:plpwg5r2] >>368 わかってないようだけど、「Cよりアセンブラで書いた方が早いコードをかける」 かどうかはプログラマの能力というより(もちろんそれもあるが...)CPUコアの アーキテクチャーに依存するんだよ。
371 名前:デフォルトの名無しさん [2014/05/19(月) 04:28:14.48 ID:Ie7r34UX] >>370 で、それが何? そこで話とぎらせないで最後まで書き込んでコード晒して締めくくれ
372 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 04:48:38.04 ID:V1owkTNJ] Cから始めてアセンブラなんか触ったこともないただのガキだってのは もうスレ眺めてる全員がわかってるから、もう素直に引いとけ。 見苦しくて仕方がねぇ。
373 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 05:38:24.26 ID:6L2g2kAx] >>365 >また、このジッタは意図して加えられたとも考えられます。そう、EMC対策ですね。 >システム・クロックの原発を振ってスペクトラムのピークを拡散して、規制ラインをパスさせてしまうというせこい手法です。 >最近流行っているようですが、輻射ノイズのパワーが減るわけではないんですよね。 >FM復調して三角波が出たらまず間違いないでしょう。 >まぁ、これについてもデータシートに記述が無いので単なる憶測です。もしかしたら、AppNotesにでもあるのかも知れませんが(^_^;。 おもろいな
374 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 06:57:00.53 ID:k5xxXzF6] picのCも、別に変な仕様はないと思うけどなぁ。 気持ち悪いマクロは使わなければいいだけだし、特殊用途レジスタはグローバル変数としてアクセスできるし。 そも、pic24f辺りでアセンブラなんてそんな暢気なことできない。
375 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 11:03:26.44 ID:SoocijiV] >>374 PICみたいなオモチャは使ったことないけど、ハーバードアーキテクチャーなら どうしてもポインタ関係が変態仕様にならざるを得ないはずと思うけど。
376 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 13:04:32.43 ID:zujUZLqg] >>373 システムクロックを意図的に揺らすのが流行ってるとかすげぇ業界だよな…
377 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 17:33:18.14 ID:k5xxXzF6] >>375 なんで? アドレス空間でプログラムとデータが分離されているのなんて、 仮想記憶を採用しているOSでは当たり前の話だと思うのだけど。 PICやAVRにしたって同じことだよ。
378 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 18:25:09.09 ID:GrrkCfqE] >>377 アドレス空間が複数存在するということは、普通のCのポインタを実現するためには ポインタ変数にアドレスの他にアドレス空間の種類の情報を持たせる必要がある。 その上で、そのポインタを手繰るコードは、機械語レベルでは、実行時にアドレス空間の種類を判別して 適切な処理に振り分けるものになるが、これは当然のことながらコードのサイズ的にも パフォーマンス的にも無駄が多いものになる。 だから...あとは想像付くでしょ。 っていうかあんたPICのC知ってるんじゃないのかw
379 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 19:46:04.08 ID:00Yp1Qbf] >>378 別にプログラム格納領域とそれ以外とで分かれているだけだったら、どうということはない、自己書き換えができないくらいか スタティックデータとスタックがわかれていたら、ちょっと大変だね
380 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 20:30:43.55 ID:9bZhxSqo] どうということあるから。 せっかくわりと丁寧にジェネリックポインタの問題点を説明したんだから理解しろよw
381 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 20:41:35.92 ID:UXTHWD7T] >>378 別にポインタにアドレス空間の情報を付け加える必要はない そんな環境いくらでもあるんだから、現実を見ようね >>380 現実を見ようね
382 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 20:52:08.02 ID:9bZhxSqo] >>381 それはお前さんが機械語レベルのコードを想像できないからそう思うだけ。 馬鹿丸出し。
383 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 20:57:35.25 ID:V1owkTNJ] どんどんベビーサークルの中で赤ちゃんが泣きわめいてるのを 眺めてる気分になってくるなw なんだ現実ってw
384 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 22:12:24.17 ID:zujUZLqg] >>378 最初納得しそうになったが、アクセス方法で挙動変えればアドレス空間を重複させても動くことは動くな。 同じアドレスをプログラムとして実行した時とデータメモリとしてアクセスした時の内容が違うってだけだ。 Cの規約的にそれが許されてるかは知らないけど、ぬるぽが非ゼロって環境が許される位だしなぁ…
385 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 22:48:55.00 ID:9bZhxSqo] >>384 なんか伝わってないような気がするけど、まあ無理もないのかな。 ハーバードアーキテクチャーなんてマイコン野郎しか知らんし、そうでなくても 今時アセンブリ経験ありなんて少数派だろうし。 俺はPICは知らんけど8052コアは使ったことある。 これは、 (1) コード (2) 外部メモリ (3) スクラッチパッド の3種類のアドレス空間を持つ。 アドレス空間が3種類あるという意味は、たとえば0x0080番地と言っても コードメモリー上の0x0080番地と、外部メモリー上の0x0080番地と、スクラッチパッド上の 0x0080番地があって、それぞれが完全に別物だということ。 もちろん使うオペコードもそれぞれに違う。 だから>>378 に書いたように、Cの普通のポインタをインプリメントしようとすると 問題が発生する。
386 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 22:57:23.77 ID:V1owkTNJ] >>385 やはりスタックオーバーフローとかによる 相互エリア破壊を防ぐためかね?
387 名前:デフォルトの名無しさん [2014/05/19(月) 23:09:29.03 ID:OMyuXA4D] 最初に作った奴が急いで作った結果そうなった まぁスタックオーバーフローとか、 初期の開発の頃にそういうバグが干渉しないように 見た目的にもわかりやすいメモリマップを作っただけ 安定化した後ではそういう風にメモリ分けるとか、壁作るのはアホでゴミでしかないけど もうその上に数値定数リテラル打ち込みで作っちゃってるのでもうゴミ仕様も変えられない 一度すべてを焼き払う必要がある
388 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 23:37:30.87 ID:9bZhxSqo] >>386 そっち方面詳しくないけど、少なくともスクラッチパットの目的は コードをコンパクトにするため(スクラッチパッドのアドレスは8bit分しかない)と 内部の動作を並列化しやすくするためじゃないのかな。
389 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 00:00:25.00 ID:KXJMtxo4] >>385 アドレス空間が何種類あっても、アドレス値を取得した時点での用途と アドレス値を使用する時点での用途が一致してれば実用上は問題ないでしょ。 アドレス値の用途を一致させなかった場合の動作は不正になるけど、 それは自己書き換えなどアーキテクチャに依存する処理だったりするから動作する保障は元々無い。 >>386 ハーバードアーキテクチャはメモリ空間を分けることが高速化で有利とかもあった筈。 あとスタックオーバフローは大抵リターンアドレスの上書きにが先に起きるし、 バッファオーバフローの方がプログラムメモリを破壊しやすい気がするってのは重箱の隅。 >>387 ワンチップマイコンの場合はプログラムメモリはROMやFlashで、SRAMやEEPROMとは区別される事が多い。 その場合はアドレスバス幅を節約できるしハーバードアーキテクチャも合理的なんじゃないかな。
390 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 00:25:21.69 ID:WYH9CLBB] IとDでキャッシュを分けるいわゆる修正ハーバードアーキテクチャは、空間を分けるというよりは バス(すなわちフォンノイマンボトルネック)を分ける、という理解が正しい。
391 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 00:26:36.27 ID:rgNkrX1X] >>389 あんたプログラム書いたことある? ポインタ型のデータがアドレス値しか持たないとすると、 void Func(int *readPtr) { int a; a = *readPtr; ... } こういうコードは翻訳不可能になる。 なぜならreadPtrがどのアドレス空間を指すかはコンパイル時に決められないが、 実行時にはreadPtrはその情報を持っていないからだ。
392 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 00:35:08.98 ID:1tuzBX8J] コンパイルタイムとランタイムの区別は重要だよね。 宣言と定義の区別も重要だよね。
393 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 00:53:12.82 ID:5UxtGe/r] プラグインとアウトプットとか オブジェクトメゾットとクラスメソッドの違いなんかも区別したほうが良い
394 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 05:39:41.83 ID:KXJMtxo4] >>391 コード空間とデータ空間の区別だけなら用途(型情報)で判別できるから問題ないって話だよ? int *dataPtrにキャスト無しで代入できるのはデータ空間のアドレスだけだし、 int *dataPtrをキャスト無しで参照する文はデータ空間へのアクセスだけだ。 int(funcptr*)(int)も同じ。void*にキャストした結果同じ値になる位で、特に問題はない。 アセンブラ触ってりゃデータとコードでは使う命令からして違うってわかるだろうし、 x86の16bitモードでセグメントレジスタだって命令によってデフォルトのセグメントレジスタ違うわけで。
395 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 05:59:55.65 ID:NdaVjM7x] >>388 6502のアセンブラだとメモリ空間の最初の256バイトアドレス専用命令があったなぁ 頭の256アドレスだけで動かすとアドレス指定が1バイトだから高速なんだ。 ファミコンだと走査線が右下から左上へ戻る瞬間をフックしてその間に グラ書き換えとかやってたから、そういうのだけ頭の256バイトに処理が書いてあるという。
396 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 09:52:26.75 ID:NzUEutSg] 場違いついでなので貼っときますね p.booklog.jp/book/32166/read
397 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 11:44:48.16 ID:EzdvYWDi] >>394 なんかろくにコード書いたことないみたいだけど、 たとえば参照テーブルは普通はコード(組み込み用の場合は普通はROM、もっとも今時はフラッシュが普通だけど) に置くんだよ。
398 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 18:26:14.29 ID:KXJMtxo4] >>397 で、そうやって自動生成されたテーブルのアドレスを参照するポインタをどんな構文で取り出すっていうの? 各データ・コードをどの空間に配置するかはコンパイラやリンカは把握してるからそっちは取り違えたりはしないし、 (そもそもコード空間にデータとしてアクセス出来ない・コストが高い場合に勝手にコード空間に置く馬鹿はそうそういない) 配置する空間を明示しないでポインタ使うようなデータは型からそれが置かれる空間が推定できるから問題ないし、 ユーザがコード空間に配置することを指定したデータはユーザが責任持って始末するからやっぱり問題ない。 「配置する空間を明示しないで置かれたアドレスをポインタとして取得できるデータ・コード」 をどの空間に配置するかを定めないコンパイラなら変態ポインタが必要になるが、 どっちに配置するかデフォルトを決め打ちするコンパイラならそんな必要はない。
399 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 19:41:06.59 ID:NRb4Z8Gk] みんな不自由な環境で涙ぐましい努力をしてるんだな… もっと気楽にコード破壊しようぜ!
400 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 19:43:52.49 ID:GWzIaQ0O] 涙流して悦んでるよ 彼らはマゾだから
401 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 19:58:14.36 ID:XZ8PbsoH] 6809 のようにコールスタックとユーザースタックをあからさまに区別するアーキテクチャは他にありますか? ポストインクリメント・プリデクリメント等のアドレッシングを駆使するしかないのですか?
402 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 20:00:57.72 ID:mSiEAm6Z] >>402 68000
403 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 20:08:29.68 ID:XZ8PbsoH] >>402 x68 の二つのスタックは違うとおもうんだけれども
404 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 20:15:19.44 ID:BlDb7c/c] >>398 何を言ってるのかさっぱりわからない。 テーブル参照(あるいは参照テーブル)って何だかわかってる? 要するにただの配列のこと。 変更されることのない文字列リテラルとか、インデックスで表引きする必要がある データなんかはコード(ROM)に置くんだよ。当たり前だろ。
405 名前:デフォルトの名無しさん [2014/05/20(火) 21:24:35.65 ID:HOy1jzLU] 学生の2ちゃんねるの使い方としては 適当なレス書きまくって本職煽って情報引き出すやり方は結構オススメ出来る
406 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 21:39:46.44 ID:ZrV7EvFM] >>405 紀伊国屋で工学系の本棚あさるか、 linux本家のサイトからカーネル関連の記事でも読む方が効率良いんじゃないの こんなとこに居る本職って...
407 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 00:31:10.53 ID:xwpwcWPi] >>404 もうお前ワンチップマイコン用のCコンパイラ使って吐かれたアセンブリじっくり眺めるまでレスすんなアホ
408 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 01:10:11.47 ID:eRh9HOrY] そんな思いをしてまで話を続けるというんだから 相当頭おかしいですよね、君ら
409 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 01:40:02.18 ID:80khsfpx] 量子コンピュータプログラムの参考書ってないかな? ノイマン型の終焉は近いだろうから、スタートダッシュを早めたい
410 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 02:02:22.53 ID:F10iyRB2] ブルーバックスのどれかが割とガッチリ解説してて勉強になった。
411 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 03:19:06.92 ID:0TEg7WI8] >>406 平行してやるんだよ 自分の興味の向く話題にスレを誘導させるのと プログラム技術あるかどうかは関係のない話だ
412 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 03:29:36.00 ID:Zu2LY6K0] >>405 keywords が入ってきたら
413 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 11:27:14.37 ID:wZQmoP33] >>409 図書館の雑誌で見たがもう完成しつつあり、開発に日本人が関わっててGoogleやNASAがアプローチかけてるみたいだな 因みに量子コンピュータでは最初からアルゴリズムが組み込まれてるから、 今みたいに(チューリングマシン上で)アルゴリズム組んだりが不必要らしい つうことは現状のプログラミングスタイルは消え去るし、量子コンピュータプログラムの参考書なんてものは存在することすらないだろうな そもそも君は量子コンピュータとは何なのか?とチューリングマシンとの違いを一度キチンと勉強した方がいい そしたら量子コンピュータでプログラムなんて阿呆な言葉は出てこなくなるから
414 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 14:13:25.34 ID:v2EeGVEg] >>413 なんて意味深で意味の無い文章なんだwww
415 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 14:33:13.76 ID:4o9KCVxM] 一部の最適化問題と因数分解が一瞬で出来るようになるだけ そっちで飯喰わないなら勉強するだけ無駄 魅力的な腹筋マシンとライフスタイルを売りさばく方が技術者として長生きできる
416 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 16:15:30.66 ID:7rtMERN9] >>415 なんで量子関係何も知らないのにこういうバカってレスしてくるんだろう 量子コンピュータの実現 = 量子力学の前進 世界秩序はまず破壊される およそSTAPが本物だった場合と同じくらいの破壊力
417 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 16:18:16.62 ID:UBUpb/UL] 高温超電導も常温核融合も夢じゃないですね
418 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 16:30:55.69 ID:7rtMERN9] 量子力学は、まず量子的な重ね合わせなんて、プログラム上でいえば単なる再帰 現実世界のスタックオーバーフローってのは、何なのか スタックに値するものの上限は、世界の何の要素によって決まっているのか、とか その辺があやふやで危なすぎるから ありえるとすれば、付近にある分子の領域を一時的に借りていて、元のデータに戻すための複合化Keyをどこかに保持しているはず もっとも効率よくそれを保持するなら、自分の分子の中に圧縮保存して、「量子データは別腹」法則で保存領域に隙間を作り、そこを他人の分子に使わせる で、何らかの要因で複合化等に失敗した場合など、果たしてどうなるのか まぁ、霧散するのかな そこで霧散するのだといえば宇宙にあるブラックホールとはとどのつまり、 大容量の量子データの複合化に失敗し、現在進行形で複合化に失敗した分子の霧散作業中 つまりアレに吸い込まれてる物質っていうのは複合化に既に失敗してるやつ それの引力範囲内はすべてな
419 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 16:35:08.16 ID:UBUpb/UL] 訂正 x 超電導 o 超伝導
420 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 16:44:40.39 ID:k82Nphgi] >>416 もしかして: 復号化
421 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 17:41:53.29 ID:RpNOeQuE] >>417 夢なのは高温超伝導じゃなくて室温超伝導でしょ。 高温超伝導の高温って超伝導の中での高温だから、実際は液体窒素レベルの温度の話。 液体窒素で実演したりする超伝導は高温超伝導で、夢じゃなくて普通に実現済みの技術。