[過去ログ] C言語なら俺に聞け 152 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
866
(1): デフォルトの名無しさん (アウアウウー Sa09-XqET) [] 2019/08/05(月) 18:15:51 ID:ffPl9KHXa(1/3) AAS
機械の試運転してるんだけど組み込みの部署に行きたい。どう勉強すればええ?
867
(1): デフォルトの名無しさん (ワッチョイ 75da-/7DC) [sage] 2019/08/05(月) 18:38:57 ID:LSG3ddZk0(1) AAS
機械の試運転とは?
868
(1): デフォルトの名無しさん (アウアウウー Sa09-XqET) [] 2019/08/05(月) 19:55:27 ID:ffPl9KHXa(2/3) AAS
>>867
配線やら電気系のことして実際に動くかどうかを確認して不具合が出たら直す仕事
869: デフォルトの名無しさん (ドコグロ MM93-EOJ1) [sage] 2019/08/05(月) 20:02:47 ID:s1STjseDM(1) AAS
>>866
まずは日本語からかな
言いたい事が人に伝わるようになれ
870
(1): デフォルトの名無しさん (ワッチョイ 25f6-7ShF) [sage] 2019/08/05(月) 20:55:17 ID:sY7ZsQgE0(1) AAS
>>868
電子じゃない電気なの?
871: デフォルトの名無しさん (ワッチョイ cb63-0ks1) [sage] 2019/08/05(月) 21:11:13 ID:9k1HrfSt0(1) AAS
ひょっとしてシーケンサー?
872: デフォルトの名無しさん (アウアウウー Sa09-XqET) [] 2019/08/05(月) 22:17:01 ID:ffPl9KHXa(3/3) AAS
>>870
工業の情報卒なんだけど電気系に配属されたんやで。
PLCで動く機械もあるし、C言語で動く機械もあるで
873: デフォルトの名無しさん (アウアウエー Sa13-x4/I) [sage] 2019/08/05(月) 23:05:42 ID:80MqE3Goa(1) AAS
車載系の仕事は最近多いよ
でもCじゃなくてC++だと思う。規格的に。
874
(1): デフォルトの名無しさん (ワッチョイ ad63-7p+E) [sage] 2019/08/07(水) 00:38:42 ID:TX6V/c5+0(1) AAS
だいぶ前(20年ぐらい前)からですが
C言語で配列の範囲オーバーすると
ほぼ必ずSegmentation Faultになるようになった

メモリ上の配置を考えたら
ちょっと範囲オーバーしたからって滅茶苦茶な値を読み込みながら普通に動くはず
毎回コンパイラが範囲チェックするようなマシン語吐いてるんでしょうか?
875: デフォルトの名無しさん (アウアウエー Sa13-x4/I) [sage] 2019/08/07(水) 00:49:22 ID:xA4g5oLMa(1) AAS
でかいプログラムなら余裕があるから今でも結構耐えると思うけどね
ASLRのせいとか?
876: デフォルトの名無しさん (ワンミングク MMa3-J2R6) [sage] 2019/08/07(水) 08:05:09 ID:hSQIkEVZM(1) AAS
配列のメモリ配置をページ境界ぎりぎりに配置するようになってるリンカを使ってるとか。

環境わからんからなんとも言えんが、ちょっとはみ出した程度で障害を検知するようなメモリ配置するリンカは使ったこと無いので、もしあるなら環境知りたいわ。
877
(1): デフォルトの名無しさん (ブーイモ MMc9-YLZR) [sage] 2019/08/07(水) 19:29:43 ID:kvH3ILvqM(1) AAS
「ちょっと」がどれくらいか知らないけど
プログラムの割当範囲超えて読み出せたらセキュリティ問題になりそうだから
OS側でエラーにしてるんじゃね

20年くらい前ってことはWin2000とか
NT系列が普及してきた頃か
878: ◆QZaw55cn4c (ワッチョイ 6347-Tyr6) [sage] 2019/08/07(水) 19:37:57 ID:6yYkldJK0(1) AAS
>>877
>OS側でエラーにしてるんじゃね
どうやって…
879: デフォルトの名無しさん (JP 0H51-JqUZ) [sage] 2019/08/07(水) 20:03:18 ID:gw5PInHpH(1) AAS
1バイトでもずれたらエラーにするようなおせっかいな
Cコンパイラなんて実用的に使われるはずないし、
それを検出するようなOSも存在しないから心配するな。
「ほぼ」必ずがどんなもんか知らんが、
環境も書かないうろ覚え情報は価値なし。
880
(1): デフォルトの名無しさん (アウアウエー Sa13-x4/I) [sage] 2019/08/07(水) 20:21:39 ID:klXV3cZTa(1) AAS
segvってそもそも誰が出してんの?
CPU?
881: デフォルトの名無しさん (ワッチョイ ab7c-0ks1) [sage] 2019/08/07(水) 20:28:42 ID:fbTDynTX0(1) AAS
>>880
まあ大体そう
最近メモリコントローラは実家に戻って子供部屋おじさんになった
882: デフォルトの名無しさん (ワッチョイ 0501-LGjB) [sage] 2019/08/07(水) 20:33:14 ID:SR2YpJo70(1/2) AAS
工期ではCPUで良いけど正確にはMMUだな。
883: デフォルトの名無しさん (ワッチョイ 0501-LGjB) [sage] 2019/08/07(水) 20:33:45 ID:SR2YpJo70(2/2) AAS
✕工期
○広義
884
(4): デフォルトの名無しさん (スフッ Sdfa-xky6) [] 2019/08/08(木) 21:20:13 ID:gHNDo6wMd(1) AAS
C言語のポインタで
構造体の中で char *a; でメンバを入れてその後 bc.a=なんちゃら〜 で中身を入れれる意味がわかりません(bcは適当)

この時のaはchar型のアドレスを入れる用の箱じゃないんですか?
885: デフォルトの名無しさん (ワッチョイ 9501-xky6) [sage] 2019/08/08(木) 21:29:57 ID:DLp++heI0(1) AAS
>>884
その中身はchar*なんでしょ
886: デフォルトの名無しさん (JP 0Had-pswD) [sage] 2019/08/08(木) 21:36:44 ID:6z4gxBSLH(1) AAS
>>884
なんちゃら〜が不明。もっとちゃんと引用して。
887: デフォルトの名無しさん (ワッチョイ 7d61-VaZZ) [sage] 2019/08/08(木) 21:43:20 ID:ggjVn3y20(1) AAS
>>884
ん?
代入でbc.aのポインタが指す先の中に入れられると思ってるのか?それは気のせいだ
888: デフォルトの名無しさん (アウアウウー Sa39-y1ph) [sage] 2019/08/08(木) 22:22:51 ID:tebxUNsfa(1) AAS
>>884 はマルチポスト
スレ立てるまでもない質問はここで 149匹目
2chスレ:tech
889
(2): デフォルトの名無しさん (ワッチョイ 7144-1zmT) [] 2019/08/08(木) 23:56:48 ID:Z+gh8ecz0(1) AAS
コピペで事務仕事をある程度自動化できる程度やけとプログラマになってもええか?
組んだことあるのはJAVAとCとVBAや。ポインタはイマイチよく分かっとらん。
890: デフォルトの名無しさん (アウアウエー Sa02-O5Qm) [sage] 2019/08/09(金) 00:24:13 ID:6e2j91pda(1) AAS
注力するならC#がええと思いますよ
891: デフォルトの名無しさん (ワッチョイ da01-RqjC) [sage] 2019/08/09(金) 03:31:58 ID:P0R/OZlj0(1) AAS
>>889
なってもいいけどそのレベルで食っていけるかどうか知らん
892: デフォルトの名無しさん (ワッチョイ 7663-iNuD) [sage] 2019/08/09(金) 07:05:24 ID:wDIMdjXm0(1) AAS
今食っていけてるんだから大丈夫だろ
893: デフォルトの名無しさん (ワッチョイ 9501-xky6) [sage] 2019/08/09(金) 07:11:48 ID:UutwPLbs0(1) AAS
>>889
やりたいならやればいい
人にやめとけって言われたらやめるのか?
人に聞くことじゃないぞ
894: デフォルトの名無しさん (ワッチョイ 7144-1zmT) [] 2019/08/09(金) 23:21:54 ID:DquSwjO80(1) AAS
今は製造管理部や。いつかはシステム系の仕事がしたい
895: デフォルトの名無しさん (ワッチョイ 9501-C+Ts) [sage] 2019/08/10(土) 22:18:15 ID:J1bMQiAW0(1) AAS
Ansibleでもやってろ
896
(1): デフォルトの名無しさん (ワッチョイ fda0-+P8T) [sage] 2019/08/11(日) 19:14:52 ID:NrvveISi0(1) AAS
コピペ事務員がC言語で何すんの?
システム系って具体的になにがやりてーの?
897: デフォルトの名無しさん (ワッチョイ 45f6-X5Lh) [sage] 2019/08/11(日) 19:58:13 ID:XjjjEpxU0(1) AAS
ウサギとカメだなw
898: デフォルトの名無しさん (アウアウウー Sa39-1zmT) [] 2019/08/11(日) 22:26:43 ID:DBEcd/Mha(1) AAS
>>896
くみこみ
899: デフォルトの名無しさん (ササクッテロ Sp75-0ye8) [sage] 2019/08/12(月) 14:25:50 ID:awsnfbDbp(1/8) AAS
C言語を趣味で勉強し始めて、苦C、プログラム言語Cを読んだだけでまだまともなプログラムを書いたことない者です。
実践を兼ねて職場で使えるプログラムを書いてみようと思っています。
職場環境がセキュリティの関係で新しいソフトなど入れられず、エクセルは元から入っている状況です。
やりたいことは日付と紐付いた情報群(8/1,a=12,c=20: 8/3, b=30, c=40)を複数個入れて、特定の日付に最も近い情報を任意の順番で並び替えながら取り出す(8/5: 8/1, a=12; 8/3, b=30; 8/3, c=30)ということです。
C言語の勉強にと思ったのですがこの状況だとVBAを勉強してエクセルでマクロを組む方がいいでしょうか…ご教授願います><
900: デフォルトの名無しさん (ササクッテロ Sp75-0ye8) [sage] 2019/08/12(月) 14:34:08 ID:awsnfbDbp(2/8) AAS
ごめんなさい。↑c=40でした。
901: デフォルトの名無しさん (ワッチョイ 9501-xky6) [sage] 2019/08/12(月) 14:43:41 ID:TQ9KMPr70(1/5) AAS
CでもVBAでもなんでもできます
902
(2): デフォルトの名無しさん (ササクッテロ Sp75-0ye8) [] 2019/08/12(月) 15:04:39 ID:awsnfbDbp(3/8) AAS
C言語で行う場合、どういう方法がいいでしょうか。
後出しで申し訳ないですが、コンパイラが無くpcで実行できるのがエクセルだけ、外部からテキストファイルすら入れられないpcです…
903: デフォルトの名無しさん (ワッチョイ 9501-xky6) [sage] 2019/08/12(月) 15:22:31 ID:TQ9KMPr70(2/5) AAS
開発環境が無いのにどうやって動かす?
904: デフォルトの名無しさん (ササクッテロ Sp75-0ye8) [] 2019/08/12(月) 15:30:27 ID:awsnfbDbp(4/8) AAS
エクセル上でソースコード書いて動かす手段あればというご質問でした…超初歩的な質問ですみません
素直にVBA使います><
905
(1): デフォルトの名無しさん (ワッチョイ 8963-cVv4) [sage] 2019/08/12(月) 15:31:34 ID:HBFUwOZh0(1) AAS
コンパイラすら入れられないならVBAでやったほうが絶対良いと思う。
というかすでにexcel上にあるデータに基づいた操作ならVBAでいいじゃん。
初心者の時点でCからexcelのデータ取り出すとか考えないほうが良いと思うよ
906: デフォルトの名無しさん (ワッチョイ 9501-+P8T) [sage] 2019/08/12(月) 15:38:48 ID:TQ9KMPr70(3/5) AAS
どうしてもCでやりたいならCloud9とかオンラインIDE使う方法もある
だけどセキュリティ厳しい職場はネット制限もあるだろうね
907: デフォルトの名無しさん (ササクッテロ Sp75-0ye8) [] 2019/08/12(月) 15:40:37 ID:awsnfbDbp(5/8) AAS
>>905
御回答ありがとうございました!
C言語の勉強になればと思いましたが、VBAでやってきます!
908
(1): デフォルトの名無しさん (ワッチョイ da01-RqjC) [sage] 2019/08/12(月) 15:48:53 ID:Mc0sgLDk0(1) AAS
>>902
C#でCコンパイラとリンカを書けばいいだけ
909: デフォルトの名無しさん (ササクッテロ Sp75-0ye8) [] 2019/08/12(月) 16:05:28 ID:awsnfbDbp(6/8) AAS
>>908
ありがとうございます!
方法はあって皆様だと簡単にできることなのですね
少し調べたのですが、windowsに元々C#のコンパイラは入ってるのでそれを呼び出すということでしょうか
まずVBAで完成させてから、こちらも勉強してチャレンジしてみます!
910
(1): デフォルトの名無しさん (ワッチョイ 45f6-X5Lh) [sage] 2019/08/12(月) 16:15:36 ID:xbNsqjWU0(1) AAS
>>902
そのpcってのは会社のPCか?
コンパイラを入れられないなら、それを使うのは諦めろ

C使いになれと会社が命じるのではなく
C使いになりたいと自分が思うなら
必要なものは自分で揃えろ
今の会社を辞めても使えるスキルは個人資産だからだ

ケチ臭いことばかり言ってしょぼい結果で終わるのか
自分を信じて大成するに相応しい投資をするのかは
人それぞれおまえ自身の生き方の問題だ
911
(2): デフォルトの名無しさん (ワッチョイ 9501-+P8T) [sage] 2019/08/12(月) 16:23:09 ID:TQ9KMPr70(4/5) AAS
C#でCコンパイラ書くのか。。。いばらの道だなw
912: ◆QZaw55cn4c (ワッチョイ 3a47-WY/S) [sage] 2019/08/12(月) 16:28:48 ID:RCgkG17b0(1) AAS
>>911
これって商機?商機ならやってみたくなりますね…
913: デフォルトの名無しさん (ワッチョイ 5595-+P8T) [sage] 2019/08/12(月) 16:30:41 ID:VzSWusfF0(1) AAS
s/商機/正気/g
914: デフォルトの名無しさん (ワッチョイ 9501-+P8T) [sage] 2019/08/12(月) 16:32:16 ID:TQ9KMPr70(5/5) AAS
どっちにしろおかしいw
915: デフォルトの名無しさん (アウアウカー Sa4d-O5Qm) [sage] 2019/08/12(月) 16:53:30 ID:YnHD16wNa(1) AAS
powershellもなかなかいいぜ
916: デフォルトの名無しさん (ササクッテロ Sp75-0ye8) [] 2019/08/12(月) 17:01:42 ID:awsnfbDbp(7/8) AAS
>>910
心に響くアドバイスありがとうございます。
上から言われたことでは全くないので、自分にスキル残るようにやっていきます。

>>911
そういうことになるのですか…無謀ですね…
リンカのことなど完全に無知なのでちゃんと調べてみます。
917
(1): デフォルトの名無しさん (アウアウウー Sa39-H0Mu) [] 2019/08/12(月) 17:13:23 ID:WrS1/BP6a(1) AAS
今このスレに書き込みしているのは自宅の自分のPCか?ならばそれ使って学習環境整えて学習すると良い。
PCなしでスマホしか持ってないみたいな場合はまずはPC買え。

学習だけならばスマホしか持ってなくてもできなくはないが今の時代はPCなしではまだかなりの困難を伴うと思って間違いなし。
918: デフォルトの名無しさん (ササクッテロ Sp75-0ye8) [] 2019/08/12(月) 18:58:43 ID:awsnfbDbp(8/8) AAS
>>917
自宅での開発環境は構築できているので、学習進めて行きます!
919: デフォルトの名無しさん (ワッチョイ b161-JGwf) [sage] 2019/08/12(月) 23:48:36 ID:n9pQsVg70(1) AAS
>>874
結論的には、ローカル変数はスタック上に確保され、スタックには関数の呼び出し
元へマシン語の ret 文で帰るための「戻りアドレス」や、以前のスタックフレームの
先頭アドレスを保存しておくために、push ebp とした際の関数の呼び出し元の
スタックフレームの ebp の値なども入ってる。
なので、ローカル変数として、TYPE a[10]; のような配列 a を確保して、
a[x] で x の範囲が 9 を超えた場合、その戻りアドレスが壊される確率がとても
高い。

1. 戻りアドレスがへんな値に書き換われば、関数から戻る際に変なアドレスに
 戻ろうとする。するとコード領域以外のデータ領域に戻ろうとしたり、
 ページングされて無い変なページに戻ろうとすることになり、保護例外
 が発生する可能性が高い。またたまたま、そのアドレスに「戻った(実際には
 戻ったわけではなく、変なアドレスに jmp しただけ)」際に、
 新しいアドレスのマシン語が変な命令に解釈されて、高い確率で
 何らかの保護冷害が発生する。

2. 関数の最後で pop ebp を実行してから、元の関数へ戻ると、
 ローカル変数は、mov [ebp+ofs],eax のような形でアクセスされる。
 だから、スタックが変に書き換わっていた場合、ebp が変なアドレスになり、
 [ebp+ofs]のアクセスの部分で保護例外が起きる。
920
(1): デフォルトの名無しさん (アウアウエー Sa02-O5Qm) [sage] 2019/08/13(火) 00:08:44 ID:bI98bSLia(1/3) AAS
よくわからんが、retして顕在化する問題の発生が増えたってこと?
921: デフォルトの名無しさん (ラクペッ MMdd-u6+H) [sage] 2019/08/13(火) 01:31:47 ID:l5EJHg1rM(1) AAS
20年ぐらい前からという条件なら特に変わりは無いだろう
922: デフォルトの名無しさん (ワッチョイ 5563-iNuD) [sage] 2019/08/13(火) 06:54:43 ID:tpzkwMyE0(1/2) AAS
それ以上前はCPUが8086だった…
923: デフォルトの名無しさん (ワッチョイ 45ab-dKkF) [sage] 2019/08/13(火) 07:02:22 ID:0//4zuKx0(1) AAS
寒いな
924: デフォルトの名無しさん (アウアウウー Sa39-H0Mu) [] 2019/08/13(火) 09:45:48 ID:2qtnUYLta(1/2) AAS
いわゆる普通の Windows PC だとそんな感じかな?中身が Windows NT のやつになってよりまともな感じのOSになったと。
しかし他のOSやCPUでは約20年前からとか、そういうのはない。あったとしても時期が違う。
925: デフォルトの名無しさん (ワッチョイ 7663-+P8T) [sage] 2019/08/13(火) 09:56:43 ID:AAd69x7F0(1/3) AAS
NTになってからも、この現象は起きます
926
(1): デフォルトの名無しさん (ワッチョイ b17c-JGwf) [sage] 2019/08/13(火) 10:26:31 ID:rjuNmU8i0(1/5) AAS
>>920
OSがプロテクトモード(保護モード)で動作して、アプリが保護違反をしてないかCPUが常に監視
しながら動くようになってからはその辺の事情は特に変わってない。なお、
スタックフレームは、

関数名 proc
 push ebp
 mov ebp,esp
 sub esp,定数値
 ・・・
 mov esp,ebp
 pop ebp
 ret
関数名 endp

のような形式になっていて、もしローカル変数として配列を確保して、それが
バッファオーバーランした書き込みを行った場合、上記の pop ebp で変なアドレス
がebpに入り、retで変なアドレスへ飛ぼうとする。変なアドレスに飛ぼうとしたら
そこで保護例外が起きる確率が高くなる。また、上記の関数の構造は、関数を
呼び出した親の関数でも同じなので、そこでも、祖父の関数へ戻る際、
最後の方で mov esp,ebpという命令が実行される。しかし、今言ったように
ebpに狂ったアドレスが入ってしまっていれば、この命令で esp = ebp
とされようとしたときにセグメンテーション・フォールトが起きる可能性が
高くなる。espへの代入は、保護に関して他のレジスタへの代入とは違う
特別な処理がされており、ss というスタックセグメントの範囲から逸脱していないか、
また、espが4で割り切れる値になっているかどうかのチェックが入る。
それは普通のページング・フォールトのチェックだけよりも調査項目が増えるので
より厳しくなる。
927
(2): デフォルトの名無しさん (アウアウエー Sa02-O5Qm) [sage] 2019/08/13(火) 10:32:41 ID:bI98bSLia(2/3) AAS
だから、何が変わったのか言えよ
928
(1): デフォルトの名無しさん (ワッチョイ b161-JGwf) [sage] 2019/08/13(火) 10:40:59 ID:+uxvNwqI0(1/2) AAS
>>926
・ret文で変なアドレスに飛ぼうとした場合、そのページが実行属性が付いていない
 場合や、そもそもページングされて無いアドレスであればページ例外が起きる。
 さらに、たまたまそのチェックがすり抜けても飛んだ先の命令列のうちのどこかが、
 存在しない命令パターンだったり、アプリでは使ってはいけない命令に
 なってしまっている確率も結構、高頻度で有ってその場合「不法命令外」
 というものが生じる・

・esp=ebpにされる際、espが4で割り切れるかどうかのチェック入る。だから、
 スタックが破壊された場合、3/4(4分の3)、即ち75%の確率でここで
 スタック保護例外が生じる。また、スタック・セグメントの範囲チェックで、
 大体、50%〜90%くらいの確率で異常が発見される。そして、これら二つの
 チェックで異常が発見される確率は、1-(1-0.75)*(1-0.5〜0.9)程度の確率となる。
 となり、僅かでもスタックのebpの保存場所にバッファオーバーランが派生した場合、
 結構な高確率で異常が発見される。大体、これだけでも、9割以上。

・上記は、偶然に異常が発見される確率。全ての確立を総合すると、
 1-(1-p_1)(1-p_2)・・・(1-p_n) のような形で偶然にして異常が発見されるが、
 チェック項目の個数 n が十分大きいと、割と即座に近い時期に異常がたまたま発見される
 確率は、99%位になっても不思議は無い。これは数学の話。
929: デフォルトの名無しさん (ワッチョイ b161-JGwf) [sage] 2019/08/13(火) 10:42:39 ID:+uxvNwqI0(2/2) AAS
>>928
誤:なってしまっている確率も結構、高頻度で有ってその場合「不法命令外」
正:なってしまっている確率も結構、高頻度で有ってその場合「不法命令例外」
930: デフォルトの名無しさん (アウアウエー Sa02-O5Qm) [sage] 2019/08/13(火) 10:48:21 ID:bI98bSLia(3/3) AAS
確立って書くのは例外なくアホ
931: デフォルトの名無しさん (ワッチョイ b17c-JGwf) [sage] 2019/08/13(火) 10:50:03 ID:rjuNmU8i0(2/5) AAS
変換ミスだよ。
932: デフォルトの名無しさん (スッップ Sdfa-MjoS) [sage] 2019/08/13(火) 11:41:48 ID:/0JIigTLd(1) AAS
フン、難しすぎてチンプンカンプンだぜ
933
(1): デフォルトの名無しさん (ワッチョイ b17c-JGwf) [sage] 2019/08/13(火) 12:09:25 ID:rjuNmU8i0(3/5) AAS
>>927
20年前1999年くらいに起きた変化だとすれば、単純にOSがCPUのプロテクト
モード(保護モード)で(ちゃんと)動作するようになった影響だと考えられる。
934: デフォルトの名無しさん (ワッチョイ 7663-+P8T) [sage] 2019/08/13(火) 12:15:52 ID:AAd69x7F0(2/3) AAS
まだちゃんと動作していないよ
CPUがなんちゃってプロテクトモードだから
935
(1): ◆QZaw55cn4c (ワッチョイ 3a47-WY/S) [sage] 2019/08/13(火) 12:16:04 ID:RSblMGL30(1) AAS
>>933
ユーザーアドレス空間をいちいちチェックしているとは思えませんが…
936: デフォルトの名無しさん (アウアウウー Sa39-H0Mu) [] 2019/08/13(火) 12:41:24 ID:2qtnUYLta(2/2) AAS
95や98とXPは違う、っていうなら単純にOSの違いが影響していると思われ
937: デフォルトの名無しさん (ワッチョイ b17c-JGwf) [sage] 2019/08/13(火) 14:07:38 ID:rjuNmU8i0(4/5) AAS
>>935
プロテクトモードだとCPUが常にチェックし続けてますよ。
3.5GHzとかで、1命令実行するたびにチェックしながら動いています。
ハードウェアレベルでそういうチェック機構がCPUの内部に入っているので。
938
(1): デフォルトの名無しさん (ワッチョイ 45f6-X5Lh) [sage] 2019/08/13(火) 16:10:25 ID:74dfGXTi0(1/2) AAS
ソフトと違い、ハードでのチェックは処理時間を遅延させないからな
939: デフォルトの名無しさん (ワッチョイ 9501-InMM) [sage] 2019/08/13(火) 17:04:27 ID:5q1NdOKU0(1) AAS
>>938
厳密にはそれは言い過ぎ。
940: デフォルトの名無しさん (ワッチョイ 45f6-X5Lh) [sage] 2019/08/13(火) 17:08:00 ID:74dfGXTi0(2/2) AAS
V=Rは速いとか言いたいのか?
941
(1): デフォルトの名無しさん (ワッチョイ da01-RqjC) [sage] 2019/08/13(火) 17:48:57 ID:b87Bd4Qh0(1/2) AAS
最近はあまりないけどMMUの処理で1サイクル遅延するハードとかもあったよ
要するに「常に」処理時間を遅延させないってわけじゃないってことな
942
(1): デフォルトの名無しさん (ワッチョイ b17c-JGwf) [sage] 2019/08/13(火) 19:33:45 ID:rjuNmU8i0(5/5) AAS
>>941
現代のCPUでは、パイプラインを使っているのである程度重い処理であっても、
速度低下には繋がらないような仕組みがあります。
結構複雑なMMUの処理が入っても1命令の実行速度の低下は全く無いことが
多いです。
943
(1): デフォルトの名無しさん (ワッチョイ 5563-iNuD) [sage] 2019/08/13(火) 19:56:23 ID:tpzkwMyE0(2/2) AAS
そこまでやってくれるのにバッファオーバーラン自体はチェックしてくれんのですか
944
(1): デフォルトの名無しさん (ワッチョイ 7663-+P8T) [sage] 2019/08/13(火) 20:04:59 ID:AAd69x7F0(3/3) AAS
最近のCPUでの脆弱性がどうして起きているか,誰か解説して
945: デフォルトの名無しさん (アウアウエー Sa02-O5Qm) [sage] 2019/08/13(火) 20:05:05 ID:UammDDeWa(1) AAS
まあそっちはばるぐりどんの仕事だよね。
最近は全然関係ないところでバスエラーが発生する様なプログラムはあんまり見なくなったわ。新規に作り込むことはないだろうし、古いコードもあらかた直したし。
946: デフォルトの名無しさん (ワッチョイ da01-RqjC) [sage] 2019/08/13(火) 20:23:31 ID:b87Bd4Qh0(2/2) AAS
>>942
通信簿に人の話をあまり聞いてないとか書かれたことない?w

> 最近はあまりないけど
947: デフォルトの名無しさん (ワッチョイ 7d9f-PMB1) [sage] 2019/08/13(火) 22:27:20 ID:mICjniMU0(1) AAS
>>943
バッファオーバーランはプログラム上の論理的な境界の問題だから、ハードウェア的に一律に処理することはできないよ
948: デフォルトの名無しさん (ワッチョイ daad-LRiH) [] 2019/08/13(火) 22:48:57 ID:1mKsD1EO0(1) AAS
バイト単位でマスク掛けてそこからはみ出すアクセスで割り込みできればなんとかなりそう。
949
(6): デフォルトの名無しさん (ワッチョイ 7a40-X5Lh) [sage] 2019/08/14(水) 13:20:34 ID:FpyX88UP0(1) AAS
仮想アドレスってどう実装されてるの?
86系はセグメントで先頭アドレス決めてるだけだろうけど。
950: デフォルトの名無しさん (ワッチョイ 7663-+P8T) [sage] 2019/08/14(水) 13:30:00 ID:29pnbISy0(1) AAS
>>949
仮想86モードのこと?
951
(1): デフォルトの名無しさん (ワッチョイ da01-RqjC) [sage] 2019/08/14(水) 13:51:20 ID:xanGzDta0(1/2) AAS
>>949
ページングの話なのかセグメントの話なのか
952
(1): デフォルトの名無しさん (ワッチョイ 5a61-JGwf) [sage] 2019/08/14(水) 14:20:06 ID:meO8Vw3B0(1/3) AAS
>>951
一応、x86系(IA32)で、仮想アドレスというと大体ページングの方をさし、
セグメントの方は、二部分アドレス、などということが多いことは多い。
953: デフォルトの名無しさん (ワッチョイ da01-RqjC) [sage] 2019/08/14(水) 14:29:06 ID:xanGzDta0(2/2) AAS
>>952
それはそうだが>>949
> 86系はセグメントで先頭アドレス決めてるだけだろうけど。
って書いてるので何を知りたいのかよくわからん
954: デフォルトの名無しさん (ワッチョイ 5a61-JGwf) [sage] 2019/08/14(水) 15:01:22 ID:meO8Vw3B0(2/3) AAS
>>949
記憶に頼って書くので、少し間違いがあるかもしれないが、IA32では、
・仮想アドレスの4KBの領域が1ページと呼ばれる。
・それぞれのページの先頭アドレスには好きな物理アドレスを割り付けることが
 出来る。また、ページごとに、R,W,E 属性などを ON/OFF できる。
 Read/Write/Execute ができるかどうかを指定できるということ。
・1024個のページのをまとめてテーブルにして、そこにそれぞれのページの
 上記情報をまとめて書く。このテーブルは連続した4MBの仮想アドレス領域
 に対応している。このテーブルは、1ページあたりが4バイトになっていて、
 「エントリ」と呼ばれる。4バイトのエントリが1024個集まって1つの
 テーブルを形作り、「ページテーブル」という。ページテーブル自体も
 また4KBになっていて、ページのサイズと同じになっている。
・さらに、このページテーブルの先頭アドレスを1024個分まとめて書いた配列があり、
 ページディレクトリと呼ばれる。既に述べたようにページテーブルが仮想アドレス
 4MB分を管理するので、1024個分まとまると 4MB * 1024 = 4GB 分を管理
 することができるようになる。これで2^32=4GBに相当するので32BITのアドレス
 空間全てを管理できるようになる。
・ページテーブルの中には、物理アドレスを割り付けないページを作ることも出来る。
・ページディレクトリも、ページテーブルを割り付けないエントリが有っても良い。
・ページディレクトリが置かれた物理アドレスは、CPUの特殊な専用レジスタの中に
 入れられる。
・ぺージディレクトリ、ページテーブルの情報は、メモリアクセスを伴うマシンご命令を
 実行する際に必ず必要になるので、高速化するため、TLB(Translation Lookaside Buffer
 、アドレス変換バッファ)という専用のキャッシュ領域に格納されて、とても高速に
 処理できるようになっている。TLBのキャッシュをクリアして再度構築する(読み込む)
 には、結構時間がかかるといわれており、これがOSのプロセス(タスク)切り替えの
 大きなオーバーヘッドを生むといわれている。
955: デフォルトの名無しさん (ワッチョイ 5a61-JGwf) [sage] 2019/08/14(水) 15:11:00 ID:meO8Vw3B0(3/3) AAS
>>949
なお、WindowsやLinuxでは、セグメンテーションの方は積極的には
ほとんど使っておらず、意味がある使い方をしているのはページングの方だけ。
だから、デファクトスタンダードのOSは、ほぼ全てページングだけを使っている
と言っても過言では無い。セグメンテーションは、スタック領域(esp,ebp)の
ためだけにはやや意味のある使い方がなされる場合があるかも知れない。
というのはスタック領域については、CPUの保護がちょっとだけ強く保護できる
仕組みを持っているが、それがセグメンテーションの仕組みを使っているから。
例えば、仮想アドレス領域の一部だけをスタック領域にして、そこからはみ出た
場合には保護例外を発生させたいような場合には、セグメンテーションが利用できる。
上手く使えば、スタックの自動伸張にも使えないことも無い。ただし、
自動伸張にか関してはそんなに上手く使いこなせる仕組みでも、そんなに
効率が上げられる訳でもない。再帰関数の何度も呼びすぎてスタック
を使いすぎた場合にプログラマにエラーを表示するような目的には
使おうと思えば使える。
956: デフォルトの名無しさん (バッミングク MM49-lbBw) [sage] 2019/08/14(水) 17:57:06 ID:vUE0DVkpM(1) AAS
いくつか補足

>>・仮想アドレスの4KBの領域が1ページと呼ばれる。
今のx86では4MB、x64では2MBのページや1GBのページも使え、メモリ使用効率を犠牲にして大量のメモリを使うプログラムのパフォーマンスを上げられるようになっている。

>>・それぞれのページの先頭アドレスには好きな物理アドレスを割り付けることが出来る。また、ページごとに、R,W,E 属性などを ON/OFF できる。
先頭アドレスが設定できるアドレスは4kB毎。x86でのExecute指定はPAEが有効な時のみ

>>・1024個のページのをまとめてテーブルにして、
x64とPAE有効なx86では8バイト512エントリ

>>・さらに、このページテーブルの先頭アドレスを1024個分まとめて書いた配列があり、ページディレクトリと呼ばれる。
x64では512エントリのテーブルが4段で1ページ4kBだから、4*9+12=48ビットの物理メモリまで指定できる

>>例えば、仮想アドレス領域の一部だけをスタック領域にして、そこからはみ出た場合には保護例外を発生させたいような場合には、セグメンテーションが利用できる。
x86では出来るが、ページングで自動伸長やスタックオーバーフロー検出を特に問題なくできるからわざわざ使わないし、x64ではベースとリミットが廃止されたから不可能

あと、x64で互換モード(32bit)とlongモード(64bit)の切り換えはコードセグメントの設定で自動的に行われるから、そのためには最低2つのコードセグメントが必要
957: デフォルトの名無しさん (アウアウウー Sa39-InMM) [sage] 2019/08/14(水) 17:58:59 ID:8Ip/utt6a(1) AAS
>>949
セグメントと仮想アドレスは別物だぞ?
セグメントはあくまで絶対アドレス、仮想アドレスはページングを使ったプロセス毎のリニアメモリ再構築。
958: デフォルトの名無しさん (ワッチョイ 9501-xky6) [sage] 2019/08/14(水) 18:05:09 ID:WgtMp1yE0(1) AAS
おまいら詳しいな
いつも煽るだけのジジイとは大違いだ
959: デフォルトの名無しさん (ワッチョイ 45ab-dKkF) [sage] 2019/08/14(水) 18:23:42 ID:5CXVdP5r0(1) AAS
仮装はドレスって何よって空目した
960: デフォルトの名無しさん (ワッチョイ a9ad-bVxB) [sage] 2019/08/17(土) 06:23:28 ID:Zf+OyZFy0(1) AAS
CPUの振る舞いは、MS-DOS時代から触っていたら、OSを直接触る仕事して無くともそれなりに身に付く知識。

90年代の雑誌の記事とか、今見返すと結構適当な言い回しがおおいかなー。
961
(4): デフォルトの名無しさん (ワッチョイ 2b82-9R4q) [] 2019/08/17(土) 14:33:53 ID:1OZ5Sjcw0(1/4) AAS
設計から組み込みの部門に転籍したいんやけど応用情報取ればアピールになる?
962
(1): デフォルトの名無しさん (ワッチョイ d901-KVZO) [sage] 2019/08/17(土) 14:38:02 ID:5o1qwOfF0(1/3) AAS
>>961
なんでここで聞くんだよ
スレタイ読めないのか?
963
(1): さまよえる蟻人間◆T6xkBnTXz7B0 (スフッ Sd33-XbXL) [sage] 2019/08/17(土) 14:43:11 ID:hkO+8710d(1/6) AAS
>>961
プログラマ板へGo!
964
(1): デフォルトの名無しさん (ワッチョイ 2b82-9R4q) [] 2019/08/17(土) 15:13:05 ID:1OZ5Sjcw0(2/4) AAS
>>962
うるせーハゲ質問に答えろハゲ
965: デフォルトの名無しさん (ワッチョイ 2b82-9R4q) [] 2019/08/17(土) 15:13:17 ID:1OZ5Sjcw0(3/4) AAS
>>963
サンキュー行ってくるわ
1-
あと 37 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.033s