C言語勉強しているけど肝心なシステムコールはアセンブリなんだな

1: 2019/07/16(火) 03:22:29.450 ID:F7Loyv+Md
C言語だけだとprintfすら出来ないのか
まあOS依存だからある意味当然か

2: 2019/07/16(火) 03:24:15.592 ID:5bMzg3gO0
ちょっと言ってる意味がわからない

3: 2019/07/16(火) 03:25:55.638 ID:EErgx/mk0
コンピュータはコミュ障だから

4: 2019/07/16(火) 03:26:31.572 ID:8qaxcoZw0
ライブラリはCでもアセンブリでも書けるんじゃないか?
コンパイラでリンカとかあるんやない?

6: 2019/07/16(火) 03:32:35.742 ID:F7Loyv+Md
>>4
C言語のライブラリを突き詰めて行くと
システムコールを呼び出すための関数までは行くけど
C言語そのものにはシステムコールを実行する機能は用意されていないから
実際のシステムコール呼び出しはアセンブリで書かなければならない
適切なレジスタに適当な値をセットしてsyscall命令よ

5: 2019/07/16(火) 03:28:35.811 ID:8qaxcoZw0
ライブラリ ヘッダファイル ライブラリソース とかこの辺の編集やれば

どうとでもなるし 再利用も可能だよ?

7: 2019/07/16(火) 03:32:53.736 ID:8qaxcoZw0
printf も ライブラリで構築できるよ?

キャラクタLCDつないで IO入出力で関数つくればいいだけ

8: 2019/07/16(火) 03:36:37.338 ID:F7Loyv+Md
>>7
unistd.hのread writeのことを言ってる?
それの中身がアセンブリで書かれているという話

10: 2019/07/16(火) 03:42:22.418 ID:8qaxcoZw0
>>8
マイコンの話
組込系で 標準入出力関数も使えない場合

13: 2019/07/16(火) 03:51:10.733 ID:F7Loyv+Md
>>10
マイコンはOSないなら別だな
バッファ書き込んだりやりようがある
普通のOS上だと特権命令違反になるからシステムコールを呼ばざるを得ない
そのシステムコールがC言語の機能としてないからアセンブリで実現しているんだな

16: 2019/07/16(火) 03:55:03.966 ID:8qaxcoZw0
>>13
通常のパソコンでも HDDの起動とかの起動順位変えるところで
フロッピーディスクから起動とかやって フロッピーにbios操作の
データ書き込んでおけば ディスプレイ操作をマイコンみたいに直でできるよ?

20: 2019/07/16(火) 04:01:30.777 ID:F7Loyv+Md
>>16
確かにそうですね、OSを起動しなければいけるかもしれない

23: 2019/07/16(火) 04:06:37.956 ID:8qaxcoZw0
>>20
OS上でっていうか じゃあOSつくればええじゃん

14: 2019/07/16(火) 03:52:39.301 ID:8qaxcoZw0
>>8
ライブラリは C言語でも アセンブリ言語でも書けるよ?

15: 2019/07/16(火) 03:53:54.351 ID:F7Loyv+Md
>>14
マジ?
じゃあ試しに文字列の標準出力をC言語だけで書いてください
ライブラリなしで

17: 2019/07/16(火) 03:58:44.972 ID:8qaxcoZw0
>>15
マイコンでか?
キャラクタLCDだとアスキーコードしか表示できないから
グラフィックLCDで組んでいけばC言語ででけるよ?

20: 2019/07/16(火) 04:01:30.777 ID:F7Loyv+Md
>>17
いや、マイコンというか、自由に全てのメモリを入出力できる状態なら出来て当たり前なので
LinuxなどのOS上でお願いします

9: 2019/07/16(火) 03:38:31.124 ID:F7Loyv+Md
ディスプレイのバッファに直接書き込むのは特権命令違反だしな
OSから作るならワンチャンか

11: 2019/07/16(火) 03:45:27.438 ID:8qaxcoZw0
マイコンで hello world  キャラクタLCDに書いたりすると
パソコンの便利さが実感できる
でも逆に I2C とか EEPROMへのアクセスはマイコンIO使ったほうが楽

12: 2019/07/16(火) 03:49:02.932 ID:8qaxcoZw0
テレビリモコンの信号解析なんかも マイコンのIOとか使うと楽
オシロとかで眺めるのもだるいし
パソコンだとインターフェースでつまずく

18: 2019/07/16(火) 03:59:35.751 ID:8qaxcoZw0
ただドットデータがめんどっちいw

19: 2019/07/16(火) 04:00:31.498 ID:8qaxcoZw0
フォントのドットデータとかだれか無料で公開してなかったかな?

21: 2019/07/16(火) 04:03:57.758 ID:5bMzg3gO0
なんで出来ないこと言ってマウント取った気になってんの?

22: 2019/07/16(火) 04:06:00.883 ID:F7Loyv+Md
>>21
いや、単純に出来ないんだなーってスレ立てたらできるできる言われたから本当にできるのか聞いているだけ

24: 2019/07/16(火) 04:09:23.911 ID:8qaxcoZw0
github上に HariboteOSのソースとか載ってるからやってみたら?

26: 2019/07/16(火) 04:16:53.250 ID:F7Loyv+Md
>>24
ちょっと読んでみましたが
面白そうですね
やって見ます
C言語のコンパイラ作ってて
特権命令はアセンブリかと思ったが
メモリに直接書き込むのは盲点だった

27: 2019/07/16(火) 04:20:32.010 ID:8qaxcoZw0
>>26
gccじゃだめなんか?

マイコンとかで遊んだほうが面白い気がするよ?

29: 2019/07/16(火) 04:26:12.003 ID:F7Loyv+Md
>>27
現在の主要なOSでは
セキュリティ(他人のファイルとか覗き放題になると困る)のために自由にメモリ(というかハードウェア資源全部)に直接アクセスできないようになっている
unix系のOSの場合、kernelだけがハードウェア資源へのアクセスが許されており、システムコールを使い特権命令モードに移行することでディスプレイへの出力やらなんやらをするんですよね
で、C言語にシステムコールをする機能そのものはないから、そこはアセンブリで書くと
あなたが言う通り、そうしたセキュリティがない上ではそんなの関係なしに弄れるからなんも問題ないです
それにそうしたシステムコールもライブラリで書いてくれてるから普通に書く分には問題ない
コンパイラ作ってて思っただけです

25: 2019/07/16(火) 04:14:09.571 ID:8qaxcoZw0
HariboteOS 動画 とかで検索してみれば?

マウス処理とかタスク処理 
コンソール自作とかフォントのドットデータで描画とか載ってるよ?

C言語でたいはんが書かれてるから追いやすい

28: 2019/07/16(火) 04:24:12.357 ID:8qaxcoZw0
電子製品で困ることが多いのは パソコンと自家に繋げないような電子素子との
インターフェースとかデータ管理じゃね?

じゃあマイコンで遊んだほうがおもろいやん
そこでいろんなライブラリとかソースとかつくっていって
パソコンと連携すればいろいろはかどる

30: 2019/07/16(火) 04:28:45.847 ID:F7Loyv+Md
完全に処理系依存な話だからしょうがない事だったな
Linuxだとシステムコール、
組み込みだと直接弄るってだけで

31: 2019/07/16(火) 04:30:31.047 ID:hG3A7wwJ0
ちょっと何でそんな感想が出たのかわからん
どの言語でも当たり前のことじゃないの

32: 2019/07/16(火) 04:34:31.963 ID:8qaxcoZw0
結構市販品のソフトでもインターフェースの面でいろんな不安定性
抱えてる気がする

パリティビットなんかも完璧じゃないし そこを完璧とみなしてる人たちもいるから
いろんなトラブルが工業製品とか生産設備でおこってるw

35: 2019/07/16(火) 04:39:19.971 ID:F7Loyv+Md
>>32
ハミング符号化を拡張しても高々〇ビットの誤り検出、訂正できるだけですしね
それ以上の誤りが出たらお手上げ

33: 2019/07/16(火) 04:36:02.581 ID:8qaxcoZw0
家庭用品なんかはノイズなんかのりにくいからいいけど

工業製品は大電流でノイズがもろにのってトラブル起こすからなw

34: 2019/07/16(火) 04:38:14.194 ID:8qaxcoZw0
ack 信号処理でロケットが飛ばなかったとかも実際あるからなw

36: 2019/07/16(火) 04:42:54.209 ID:8qaxcoZw0
ボーイング737のプログラム問題とかも
インターフェース近辺が問題じゃないんか?

ノイズ処理とか再起動処理とかフィードバックエトセトラ

37: 2019/07/16(火) 04:44:26.155 ID:8qaxcoZw0
配線の自由度が高い飛行機だと ノイズ問題がでたり
変な制御問題がでたり
複雑すぎるものをいかにシンプルに安全に回すかってなかなか大変だよな