プログラミング(C.C++)を勉強しているのですが、プログラムが実行されるまでの流れの”中身”が分かりません。
■C言語で書いたプログラム
↓
■コンパイラ
↓
■マシン語
↓
■CPU
だと思うのですが中でどのように処理されているかがよく分かりません。
あと、「マシン語によるプログラミングでは、基本的にCPUが直接解釈できるマシンコードと一対一に対応するニーモニックを使用する。この後アセンブラによってニーモニックをマシンコードに変換し、CPUで実行できるようにする。」と書いてるあったのですが、C言語との違いは何なのでしょうか?どちらもマシンコードに変換するのでおなじプログラムだと思うのですが。
色々調べているうちにこれを理解していくにはかなり難しく、マシン語がどのようにCPUで処理されて結果としてでてくるまでの過程など勉強しなければいけない気がするのですが、わかりやすい参考になる本やサイトがれば教えて頂けないでしょうか
No.2ベストアンサー
- 回答日時:
> あと、「マシン語によるプログラミングでは、基本的にCPUが直接解釈できるマシンコードと一対一に対応するニーモニックを使用する。
この後アセンブラによってニーモニックをマシンコードに変換し、CPUで実行できるようにする。」と書いてるあったのですが、C言語との違いは何なのでしょうか?前者はマシン語によるプログラミングではなく、アセンブリ言語によるものですね。
基本的にどちらも目的は同じですが、プログラミングに使用する言語が異なります。アセンブリ言語に比べてC言語の方が記述が楽になりますし、異なるCPUへの移植も容易になります。
また、コンパイラによっては、C言語から一旦アセンブリ言語に翻訳し、それからアセンブラを通してマシン語に変換しています。
> 色々調べているうちにこれを理解していくにはかなり難しく、マシン語がどのようにCPUで処理されて結果としてでてくるまでの過程など勉強しなければいけない気がするのですが、わかりやすい参考になる本やサイトがれば教えて頂けないでしょうか
本やサイトで勉強するのもよいですが、一番お勧めなのは、実際にアセンブリ言語でプログラミングしてみることです。
PC等ではアセンブリ言語だけでプログラミングするのは至難の業ですし、仮にできたとしても全貌が見える分けではありません。できれば8~16ビット程度のマイコンボードを使った方がよいでしょう。
秋月電子通商(http://akizukidenshi.com/)で数千円~1万円程度でマイコンボードが売られているので、それを使ってみてはいかがでしょうか?
他には、オークス電子(http://www.oaks-ele.com/)でもそれぐらいの金額でマイコンボードを入手できます。
回答ありがとうございました。
>コンパイラによっては、C言語から一旦アセンブリ言語に翻訳し、それからアセンブラを通してマシン語に変換しています。
なるほど、二重の工程を踏んでいるものもあるのですね。よく分かりました。ということはマシン語は全CPU共通なのでしょうか?それともコンパイラが各CPUに会わせてコンパイルしているのでしょうか?windowsならintelやAthlon
マイコンですか、楽しみながら勉強できそうですね。機会があれば買ってみたいと思います。
No.4
- 回答日時:
#2です
> ということはマシン語は全CPU共通なのでしょうか?それともコンパイラが各CPUに会わせてコンパイルしているのでしょうか?windowsならintelやAthlon
マシン語はCPUごとに全て異なります(同じシリーズのものであれば、互換性のあるものも存在します)。
AthlonはIntelのx86と互換性があるように設計されていますので、同じコンパイラで、それらに共通であったり、あるいはいずれかに特化したコードを出力できるようになっている場合が多いようです。
ただし、こうした状況は例外的で、普通は別のコンパイラが必要になります。具体的には、x86, PowerPC, 680x0, MIPS, M16C, H8, SuperH, SPARC, ARM, V850等々は全く互換性がありません。
No.3
- 回答日時:
「コンピュータはなぜ動くのか~知っておきたいハードウエア&ソフトウエアの基礎知識~」
と
「プログラムはなぜ動くのか ― 知っておきたいプログラミングの基礎知識」
おすすめです。
参考URL:http://www.amazon.co.jp/exec/obidos/ASIN/4822281 …
No.1
- 回答日時:
C言語に限らず,どのプログラミング言語(コンパイラ言語)でもだいたい,同じで(簡単に書けば)
■C言語で書いたプログラム
↓
←コンパイラ(によるコンパイル)
↓
■マシン語
↓
CPU
です。これに対して,アセンブリ言語はニーモニックコードを用いてプログラムします。
■アセンブリ言語(ニーモニックコード)で書いたプログラム
↓
←アセンブラ(によるアセンブル)
↓
■マシン語
↓
CPU
ですから,形の上ではそっくり同じです。
C言語など一般のプログラミング言語では,(あえていえば)どのCPUを用いるかはプログラミングの時点では考慮する必要がありませんが,アセンブリ言語(アセンブラ言語ともいう)ではどのCPU用の(専用の)ニーモニックコードを用いるかを最初から考えなければなりません。
下記サイト「分かりやす~いコンピュータ技術情報」の「簡単なアセンブラ言語(全19回)」が参考になるでしょう。
書店でも入門用のテキストが何種類も見つかると思いますが・・・
参考URL:http://home.netyou.jp/gg/ugpop/index.htm
返答ありがとうございます。このサイトは非常に分かりやすく説明されていました。
「ベテラン・プログラマやデータベースの専門家が,現在の複雑になったコンピュータ・システムの全体的な構造や技術を理解し,高い問題解決能力を発揮できるのはなぜだろうか。小さいシンプルなもので学び始め,コンピュータ技術の進歩とともに,これまでの経験で体得したレイヤー構造に当てはめながら,その技術の位置づけや概念を理解してこれらからではないだろうか」という文を読んで、勉強するにあたって上位構造だけではなく下位構造もしりたいと思いました。文系の私がIntelのデベロッパー向け資料を読んでみることになるとは夢にも思っていませんでした(汗
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- 計算機科学 これは迷路を解くというよりも、いかに速く最速で走り切れる経路を見出せるかや、マシン性能、プログラミン 3 2023/07/17 16:27
- C言語・C++・C# 参考にいろいろとc言語、c++言語プログラミングでレジストリーを操作したいのですが、無料配布のc++ 3 2022/12/22 01:49
- その他(プログラミング・Web制作) 次に、楽天のアジャイル就活に参加して、1日で内定を獲得できる。私は大企業に就職できる? 2 2022/04/17 13:38
- その他(自然科学) 科学技術計算の仕事について 2 2023/02/04 18:09
- ドライブ・ストレージ 複数のパソコンが自宅にあり、互いの固有のHD、光学ドライブを相互にアクセスする方法。その2 3 2022/12/16 09:54
- 情報処理技術者・Microsoft認定資格 (パイプライン処理)基本情報技術者の演習問題について 1 2023/03/11 17:47
- C言語・C++・C# 画像の画素値を変えるC言語のプログラムで指定された画像の中に白い三角形を右上に表示させるにはどのよう 3 2022/10/30 01:16
- オープンソース IT用語、ソースとオブジェクト、改変と翻訳と翻案の違いなど どのようにりかいすればよいのですか 1 2022/09/09 10:02
- その他(ソフトウェア) Corei7-12700とVmwareWorkstation17Proの相性は悪いの? 1 2023/01/09 20:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
過剰なオブジェクト指向脳から...
-
16x16のスプライトフォント
-
本格的なWebアプリを公開する時...
-
Pythonって何を意識した言語な...
-
プログラミング未経験者(殆ど未...
-
オブジェクト指向プログラミン...
-
プログラミング初心者です。 Wi...
-
vba クリップボードクリアにつ...
-
chatGPTで次々と質問をしていく...
-
家庭のパソコンで Python の 環...
-
CLispのloop内の挙動について
-
昔のパソコン少年の武勇伝「店...
-
GoogleAppsScript文字列置換の...
-
sublimit textっていうエディタ...
-
最新のプログラム言語を学ぶに...
-
初心者powershellのPS1ファイル...
-
プログラマーと学歴の関係性に...
-
pythonにてseleniumを使うも、...
-
Google ColaboでGUI作成
-
そのまま使っただけなのに・・...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ものづくりに向いているプログ...
-
電化製品って何言語?
-
昔のゲーム製作に使用する言語...
-
コンピュータ言語とプログラミ...
-
アセンブリ言語からC言語への変...
-
パチンコやスロットについて
-
割り込みベクターをC言語で書...
-
コンパイラーとアセンブラの違い
-
プログラミングを突き詰めて考...
-
アセンブリ言語を学ぶことは意...
-
Windowsはいったい何言語で書か...
-
各行のあるカラムのデータを抽...
-
これらのプログラミングで使う...
-
瞳孔に合わせて動くパソコン。...
-
フローチャートを書く書かない
-
パソコンについて詳しくなりたい
-
今はマシン語は使わないんですか?
-
0xffffとは?
-
エクセルVBAのIf,Then 構...
-
8ビットのデータの、先頭ビット...
おすすめ情報