FreeBSDを語れ Part49

■ このスレッドは過去ログ倉庫に格納されています
1デーモン君
垢版 |
2019/09/06(金) 20:47:50.69
The FreeBSD Project
https://www.freebsd.org/ja/

前スレ
FreeBSDを語れ Part47
https://mevius.2ch.net/test/read.cgi/unix/1507827321/
FreeBSDを語れ Part47 (再利用のため実質Part48)
https://mevius.2ch.net/test/read.cgi/unix/1508085628/

関連スレ
初心者もOK! FreeBSD質問スレッド その123
https://mevius.2ch.net/test/read.cgi/unix/1522192115/
2019/09/12(木) 23:57:04.30
>>95
JASRACの方からきました
2019/09/13(金) 00:05:22.74
Goよいよね
2019/09/13(金) 00:15:07.90
>>95
それが私のSATAなのか
いつも目覚めればboot -s
2019/09/13(金) 00:23:22.68
>>96
Pascalのstring型が内部的にそうなってたと思う。
2019/09/13(金) 00:38:23.48
FreeBSDな人たちはstd::stringとか使わないの?
2019/09/13(金) 00:52:50.79
>>110
昔の言語はC以外はlengthを持つのが主流だったと思う
Fortranもそうだし
2019/09/13(金) 00:53:55.14
crystal使いはいないの?
俺も使ってない
2019/09/13(金) 03:46:38.01
>>111
使うよ(^o^)
2019/09/13(金) 04:08:39.23
>>106
そんなLinusさんみたいな事云わんでも(笑)
116名無しさん@お腹いっぱい。
垢版 |
2019/09/13(金) 04:47:59.22
perl で何でもかんでもやってまーす
2019/09/13(金) 08:44:45.65
ファミリーベーシックで何でもかんでもやってまーす
2019/09/13(金) 10:06:11.87
COBOLはまだまだイケるぞ

経産省が棄てたんだからw
119名無しさん@お腹いっぱい。
垢版 |
2019/09/13(金) 11:27:02.29
>>96
mallocしたポインタのオフセット[-1]あたりにsizeがある実装が多いから
それをもっと早く規格化すればよかったと思う
2019/09/13(金) 11:51:49.70
>>119
で型を間違えて大惨事と
NULLは0だ、intは4バイトだという老害が多いんですよまだまだ
121名無しさん@お腹いっぱい。
垢版 |
2019/09/13(金) 12:05:51.57
mallocで管理されるsizeはバイト単位やろ
wchar_t が 32bit とか言う話か?
2019/09/13(金) 12:23:28.78
>>119
実装を規定するとか最悪やん
やるなら確保した領域サイズを取得する関数を規定すべき
2019/09/13(金) 12:29:36.21
>>101
碌にテストなんてやったことないというのがバレバレだなw
2019/09/13(金) 12:35:23.45
無駄なチェックを端折れて高速な処理を書けるからC使ってるのに、
遅い堅牢ならライブラリをC、C++に用意しろと言うような低レベルPGなら元からC、C++使うなってことだな。
2019/09/13(金) 13:48:35.80
今現在堅牢な高級言語は生き残ってるか?
2019/09/13(金) 14:06:11.98
堅牢な高級言語しか生き残ってないだろw
アドレスを直接扱える危険な言語って
たくさんの言語のなかどの程度あると思う?
2019/09/13(金) 14:10:10.06
>>123
へー、すごいねー
で、お前ん所のテスト密度っていくらぐらいなんだ?w
2019/09/13(金) 14:20:06.52
>>126
Cは元々アセンブラの代替として作ったものだからポインタが扱えて当たり前ですよ。
C = 高級アセンブラだから。それが嫌な人はFortranでも使っとけということで。
2019/09/13(金) 14:28:27.29
>>124
ならCじゃなくてアセンブラ使ってろよ
130名無しさん@お腹いっぱい。
垢版 |
2019/09/13(金) 17:39:53.55
>>124
ほんそれ

関数入るたびに境界チェックするコードとか入れてたらCの有難味がないな
2019/09/13(金) 19:10:51.35
OpenBSDのportsに入ってたパッチw

--- texk/dvipsk/writet1.c.orig
+++ texk/dvipsk/writet1.c
@@ -1449,7 +1449,9 @@ static void t1_check_unusual_charstring(void)
*(strend(t1_buf_array) - 1) = ' ';

t1_getline();
+ alloc_array(t1_buf, strlen(t1_line_array) + strlen(t1_buf_array) + 1, T1_BUF_SIZE);
strcat(t1_buf_array, t1_line_array);
+ alloc_array(t1_line, strlen(t1_buf_array) + 1, T1_BUF_SIZE);
strcpy(t1_line_array, t1_buf_array);
t1_line_ptr = eol(t1_line_array);
}
2019/09/13(金) 19:11:33.33
>>131
ごめんなさい。

全然違うサイトに誤爆です。
2019/09/13(金) 19:57:49.49
>>130
Cなら
if ( checkfunc( func ) ) ...
と1行で書けるから大したことなさそうに見えるけど、これをアセンブラで書くと、
汎用レジスタ全部退避して、戻りアドレス設定して、新しいスタックポインタ設定して、
チェック処理を実行して、戻る直前に汎用レジスタ全部戻してリターンするので、
毎回こんだけの処理させてわざわざ遅くするのが嫌になるんだよね。
全レジスタの退避と復帰を毎回実行させるのってほんとに無駄に感じる。
本当は、破壊されてもいいレジスタは関数ごとに異なるはずなので、破壊されて困るレジスタだけ退避
するようにすれば最適化されていいんだけど、そうするとどこかを書き換えたとき、元に戻さないといけない
レジスタができて、それの退避を忘れただけで吹っ飛ぶ。
2019/09/13(金) 20:16:21.30
>>133
三行にまとめてくんないと、1ミリも理解できないんだけど
2019/09/13(金) 20:29:34.91
素敵なコンパイラなら4行くらいにまとめてくれないかな....
2019/09/13(金) 21:01:24.16
>>134
理解しなくていいよ。
x86系の知識だけで、とりあえず知ってるワードでマウント取ろうとしてるだけだから。
2019/09/13(金) 21:21:08.17
確かMS-C6.0の頃か?(うろ覚え)破壊しないレジスタは退避しなかった筈だが?w
十数年前からメジャーどこのコンパイラは短い関数なら勝手にインライン展開するのが殆どだし
いつの時代の話をしてるんだかさっぱり
2019/09/13(金) 21:24:57.47
流し読みで読み飛ばしちまったけんども
アセンブラでプロシージャ書いたとこでコーダーがスタックポインタを設定する事なんて先ずありえんwww
2019/09/13(金) 21:28:15.19
>>137
俺も最初そう思って ??? 状態だったけど、よく読んだらアセンブラで書いた時の話みたい
アセンブラで書く時に全レジスタ保存なんてよほど間抜けでないと普通しないけどな
2019/09/13(金) 22:25:06.94
知的障害者きてんね
2019/09/13(金) 22:35:27.85
支離滅裂さからは糖質の臭いがする
2019/09/13(金) 22:52:56.29
>>136
俺は一桁ロリに mount -f したい
2019/09/13(金) 22:57:17.03
さすがに一桁はないわ
2019/09/14(土) 00:36:34.21
>>119
それはC++の場合だな
Cではそんなことする処理系が無い
2019/09/14(土) 00:41:44.98
ちなみにC++では配列の各要素に対してデストラクタを呼ばなくちゃいけない都合上サイズが格納されている
146名無しさん@お腹いっぱい。
垢版 |
2019/09/14(土) 05:03:45.80
>>142
おまわりさんこの人
2019/09/14(土) 05:13:55.38
童貞です
2019/09/14(土) 06:22:47.86
www
2019/09/14(土) 10:12:55.40
>>133
レジスタ退避と復帰は専用の命令が有るけど、CPUは実際には見えてる以上にレジスタを持ってるから毎回律儀にメモリに退避とかしてないよ
150名無しさん@お腹いっぱい。
垢版 |
2019/09/14(土) 10:53:54.50
https://mao.5ch.net/test/read.cgi/linux/1560665525/
286
俺はもうWindowsでVirtualBoxは諦めてるんだが、
FreeBSDとかSolarisとかどうしてもVirtualBoxでしか動かせなくて
必要なときはMacを使ってる。

FreeBSDとかSolarisがHyperVでも動かせるなら良いんだけど
どうもうまく行かない。
151名無しさん@お腹いっぱい。
垢版 |
2019/09/14(土) 11:01:09.06
>>145
delete [] hoge;
のときですね
良く [] 付け忘れるので防止策教えてくだされ
2019/09/14(土) 13:04:16.01
>>133は、アセンブラでコード書いてると自然にそうなるってこと。
ルーチン内ではできるだけ汎用レジスタを使って処理したほうが早くなるから、最初にメモリから必要なデータを持ってきた後は
極力レジスタだけで処理するように書く。後からその処理の途中に別の処理を入れることになって、別の関数を挟んだとすると
レジスタの値を変えてはいけないから、その関数に入ったところで全レジスタを待避し、関数の終わりで戻さないといけなくなる。

Cで同じことをしてアセンブラに展開したコードを見ると、変数の値はメモリに置いておき、必要になったらレジスタにロードして
計算したら結果をまたメモリに戻すという処理をしている。後から途中に関数が追加されても、その関数はメモリから値を
持ってきて処理するからレジスタを退避する必要はない。関数に渡すパラメータなどもスタックに入れて渡すから
同じくレジスタを退避しなくて良い。

しかしこのやり方ではメモリとレジスタ間のセーブ/ロードが頻繁に起こるので、アセンブラのソースで見るといかにも効率が悪くて
遅いとわかる。当たり前だがメモリ - レジスタ間のセーブ/ロードはレジスタ内だけの演算よりずっと遅い。
そうするくらいなら、必要なときだけレジスタを退避・復帰させた方がまし。さらに、これがforなどのループ内で使われた場合、
この遅さがプログラム全体の遅さになる。Cコンパイラのコード生成は、アセンブラから見れば遅くて無駄だらけに見える。
その分、ソースが見やすいから便利なんだけれども。
2019/09/14(土) 13:06:51.37
>>151
今から作るならnew/deleteなんてやめてvectorとかにしなよ
deleteの[ ]付け忘れるような人は例外時の解放忘れとかもしそうだし
2019/09/14(土) 13:08:22.67
>>152
頼むから今時のまともなコンパイラ使ってから語ってくれ…
2019/09/14(土) 13:14:43.19
問題はコンパイラじゃなくて変態的な処理になってしまったx86系CPUのコード処理の方だと思われ
もはやアセンブラ最適化とか狂気の沙汰と聞いた

あー、スモールでコード書いてた頃が懐かしい
2019/09/14(土) 13:40:31.42
>>151
valgrindを使えば実行時にエラーを検出して実行終了時にエラーを出力してくれる
つうかCやC++でコーディングする場合はvalgrindは必須だな
実行する環境によっては使えないかもしれんけど、他には静的解析ツールを使うという手もある
例えばcppcheckとか使うと実行する前に間違いを指摘してくれる
2019/09/14(土) 13:48:29.18
FreeBSDを12.0にアップグレードしたらvalgrindがメモリ関係のエラーを検出しなくなった(泣)
その上システムコールに対するサポートも不完全みたいで、エラーが出るし
だれかfreebsd-portsのvalgrindを更新プリーズ…
2019/09/14(土) 13:51:29.39
和訳せよ

Send FreeBSD to the great bitbucket in the sky.
159名無しさん@お腹いっぱい。
垢版 |
2019/09/14(土) 13:57:51.90
to be to be ten made to be
2019/09/14(土) 13:59:22.86
>>158
FreeBSDを空の素晴らしいbitbucketに送ってください。

>>159
十歳になる
2019/09/14(土) 18:38:11.21
>>152
今北産業
2019/09/14(土) 19:30:15.30
これでも読んだほうがいいんじゃね?

ttps://gihyo.jp/book/2019/978-4-297-10847-2
163名無しさん@お腹いっぱい。
垢版 |
2019/09/15(日) 08:08:41.06
86系にうんざりして68系に目覚めた遠いあの日の思い出
2019/09/15(日) 08:39:49.45
>>163
セグメント内64kB、相対ジャンプが8bit…
うんざりって言うより殺意を覚えたあの頃
165名無しさん@お腹いっぱい。
垢版 |
2019/09/15(日) 10:21:18.16
些細なことは気にすんな
プロテクトモード遷移でいちいち再起動の方が糞
2019/09/15(日) 12:29:04.28
OS/2はプロテクトモード→リアルモード遷移を再起動することなく実現したけどな
2019/09/15(日) 12:35:29.17
前スレ617 621で
タイトルバーの向きをひねって窓の左縁に付けたがってた者ですが
紹介してくれたsawfish, awesome, flwm, wmx, xmonadそれぞれ堪能しました
感謝を込めてlightdmディスプレイマネージャのメニューに仕込んでスクショ奉納
https://imgur.com/vqmxm21.png
2019/09/15(日) 12:56:53.58
>>166
再起動してるだろ
2019/09/15(日) 13:02:16.63
昔のWin3.0(3.1とかじゃないぞ)もきっちりプロテクテッドモードからリアルモードに正常に遷移してDOSに戻れてた
戻った時の事を考えて下位メモリ残しておくかとか、コードの増加とか実行時のメモリの無駄とかに目をつむって
正常終了のシーケンスを考えた設計にするかとか次第だろうて
2019/09/15(日) 13:27:49.62
>>167
必要ないかも知れませんがlightdmの背景変えられますよ
2019/09/15(日) 14:18:57.98
つーかプロテクテッドモードからリアルモードへの遷移は有名な話やろ?
Microsoftの凄さに震えるわw
https://builder.japan.zdnet.com/os-admin/sp_history-of-windows-2009/20392994/2/

1. まずCPUの制限でプロテクテッドモードからリアルモードへは切り替えられない(Windowsの制限ではない)

> Windows 2.0と80286
> その後、特定の命令を実行することで仮想記憶が利用可能なモード
>(メモリ保護機能がついているため「プロテクトモード」と呼ばれる)に移行できるのだが、
>プロテクトモードからリアルモードに戻る方法は存在しなかった。


2. それをMicrosoftはとんでもない発想で実現してしまった

>  もし、リアルモードに戻れなければ、Windows 2.0が起動したあとはMS-DOSコマンドが実行できなくなってしまうだろう。
>
>  Microsoftは実に巧妙な方法でこの問題を解決した。
>
>  リアルモードに移行したい場合はCPUをリセットするのである。もちろん単にリセットしたのでは
> Windowsは強制終了され、BIOSの初期化ルーチンが動いてしまう。
>
>  そこでWindowsはリセット時に実行するプログラムの実行番地をあらかじめ書き換えておく。
> そして必要なデータを退避させた上でリアルモードに移行するようにした。Windowsに戻るときはプロテクトモードに移行すればよい。
>
>  Windows 2.0の「DOS窓」は1つしか立ち上げることができない。それは、実際にリアルモードに移行しているためである。
172名無しさん@お腹いっぱい。
垢版 |
2019/09/15(日) 14:19:35.47
節子それ左ちゃう右や
2019/09/15(日) 15:02:59.61
最初のプロテクテッドモード(286)はリアルモードへの遷移ってCPUが非対応だったのか知らなかったw
てか殆ど使われなかった286プロテクテッドモードの方の話なら286って付けろよと
174名無しさん@お腹いっぱい。
垢版 |
2019/09/15(日) 15:08:07.73
64kとか言ってる時点でお察し
2019/09/15(日) 15:14:45.64
相対ジャンプが8bitってw x86使ったことないだろw
2019/09/15(日) 15:37:04.73
Windows 3.0は 8086/8088 (80286を含む)以上に対応してるからな

https://en.wikipedia.org/wiki/Windows_3.0

The official system requirements for Windows 3.0:

8086/8088 processor or better
384 KB of free conventional memory (real mode), 1 MB (Standard Mode), or 2 MB (Enhanced Mode)[9]
Hard disk with 6-7 MB of free space
CGA, EGA, MCGA, VGA, Hercules, 8514/A or XGA graphics and an appropriate and compatible monitor
MS-DOS version 3.1 or higher[1]


Memory modes
Windows 3.0 was the only version of Windows that could be run in three different memory modes:

Real mode, intended for older computers with a CPU below Intel 80286, and corresponding to its real mode;
Standard mode, intended for computers with an 80286 processor, and corresponding to its protected mode;
386 Enhanced mode, intended for newer computers with an Intel 80386 processor or above, and corresponding to its protected mode and virtual 8086 mod
2019/09/15(日) 15:38:02.37
なんかコピペしたから、プロテクテッドモードになってるなw
プロテクトモードな
2019/09/15(日) 16:58:24.68
Win3.1とかがメジャーになる前は普通に書籍でもプロテクテッドモードって書いてあったでよ
いつの間にかプロテクトモードとか呼ばれる様になっただけ
どっちも間違えじゃないだろうけど、プロテクトモードって聞くとどうしても違和感がある(全プリキュア並感

386プロテクテッドモードのA5の技術書がくすんだ緑のカバー、286の方は藍色、厚さ大体1cm位な記憶
両方持ってたけど386の方は手垢が付きまくってダメになるまで読んだり調べものしたりしたな
2019/09/15(日) 17:17:00.44
>>167
試した中でお気に入りのwmを聞いてもいい?
2019/09/15(日) 17:27:36.78
>>173
有名な話だからこの手の話でドヤりたいたらそれぐらいは知っておかないと知ったかの烙印押されてもしょうがないわな
2019/09/15(日) 17:44:33.34
初めて買ったPCがi386DXな俺はここでは若僧か。
2019/09/15(日) 17:49:08.64
ワイはMZ-700や
2019/09/15(日) 17:53:04.58
お前らジジ臭いな
俺はPentium 133MHzだ
2019/09/15(日) 17:57:38.52
>>171
CPUリセットでリアルモードへの遷移を実現したのは、
MicrosoftではなくIBMだと思ったけど、記憶違いかな
BMとMSがOS/2を共同開発していた頃なんで、どっちとも言えないのかも知れないけど
2019/09/15(日) 17:59:53.25
誤:BM
正:IBM
2019/09/15(日) 18:21:56.81
その話はよく聞くがソースはなんだっけ?
2019/09/15(日) 18:24:52.18
>>183
>お前らジジ臭いな
>俺はPentium 133MHzだ

爆速だな。 i386DXは16/20Mhzだ。もちろん20で使ってた。
1990年に買って5年間はDOSで使って、
Windowsはスルーして1995年からFreeBSDだったかな。
2019/09/15(日) 18:53:37.15
>>180
誰かと勘違いしてないか?w
2019/09/15(日) 19:03:21.52
>>184
> MicrosoftではなくIBMだと思ったけど、記憶違いかな
ハード的にリセットする仕組みが必要だからどちらかと言うとIBMだろうね
そもそも>>171
> そこでWindowsはリセット時に実行するプログラムの実行番地をあらかじめ書き換えておく。
は間違いでPC ATならリセット前にRTCのCMOS RAMにシャットダウンコードを書いておいてリセット時にそのコードがリアルモードへの復帰なら復帰用のコードを実行するようにしてるだけ
2019/09/15(日) 19:05:36.75
>>188
お前が誰かは知らんしどうでもいいw
>>173程度の中途半端な知識で語ると恥かくという忠告だし
2019/09/15(日) 19:13:32.67
マウント取りたがりの何でも知ってるさん凄いですね^^
2019/09/15(日) 19:28:59.73
おーやだ
虫唾が走る
2019/09/15(日) 19:40:53.85
悔しいのはわかったからおとなしくROMってろよ
2019/09/15(日) 19:45:36.87
俺は>>169>>173>>178しか書いてないんだが?
ただ事実を書いただけなんだが、どこでドヤってた?
2019/09/15(日) 19:48:59.35
ロリに ping 飛ばして ssh したい
2019/09/15(日) 19:51:21.17
厨二の子供から見ると自分が勝てない大人は威張っているように見えると相場は決まっている
2019/09/15(日) 20:18:20.52
ここ何のスレだよ(´・ω・`)
2019/09/15(日) 20:57:23.90
プロテクテッドて…プロテクトモードだろ
中学の英語からやり直せ
2019/09/15(日) 21:10:52.52
日本語訳:
おじちゃんたち
ぼくにもわかるおはなししてくれよ
えーんえーん
2019/09/15(日) 21:11:53.46
たしかに>>173は自分の知識が中途半端って言う「事実」が書いてあるな
まあそんな知識で>>169とかをよく書けるもんだなって思うけどな
2019/09/15(日) 21:15:49.29
>>198
インテルに言えよw
https://www.intel.com/design/intarch/papers/exc_ia.htm
2019/09/15(日) 21:17:16.01
>>199
「おじちゃん」じゃなくて「おにーさん」な?(怒)
203名無しさん@お腹いっぱい。
垢版 |
2019/09/15(日) 21:22:58.53
286だのプロテクトモードだの
そろそろ「おじいちゃん」に片足突っ込んでてもおかしく無さそうw
2019/09/15(日) 21:26:37.83
日本語訳:
ぼくだっておにいちゃんたちとなかよくしたいのに
なんでいぢめるんだよう
えーんえーん
2019/09/15(日) 21:27:11.11
>>200
当時286プロテクテッドモードなんて見向きもされてなかったんだよ
今どきプロテクトモードって言って誰が286プロテクテッドモードだと思うよ?

ちな386プロテクテッドモードから正常にリアルモードに遷移する手順が初期の本に記述されてたからな
PC-9801RA21/51が発売されて少し後に出版された緑色の本に書いてあった
(当時は日本語の386関連の本は緑色のあれしかなかった)
2019/09/15(日) 21:46:25.23
>>201
protected modeと書いて日本ではプロテクトモードと言っている
wikipediaもそうなってるいる
それをわざわざプロテクテッドと言う方がにわか
ただの知ったかぶり
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況