ソフトウェアはどこで、どのようにハードウェアと出会うのでしょうか?[閉まっている]

StackOverflow https://stackoverflow.com/questions/696378

  •  22-08-2019
  •  | 
  •  

質問

コンピュータのどこで抽象(画面上の文字)と現実(メモリやプロセッサの回路を流れる電流)が一致するのでしょうか。その進化はどのようにして起こったのでしょうか?

ここではアセンブラよりもさらに深い話をしていると思います。おそらくプロセッサ命令よりも深いレベルでしょうか?ある時点で、コマンドは実際にはハードウェアによって解釈されますが、それがどこでどのように起こるのかはわかりません。

私は大学に行っていないので、CSコースなども受講しませんでした。多くの人と同じように、私も趣味から「プロ」になりました。その結果、欠けていると思われるジグソーパズルのピースがたくさんあります。私は C++ を少し知っており、ポインターなどの概念も理解しています (ただし、怒りながらあまり使用したことはありません)。ただし、これまでは高レベルでしか作業したことがありません。この種のことを知っていることが役立つかどうかはわかりませんが、興味深いことは確かです。

役に立ちましたか?

解決

プロセッサの運営として知られているものフェッチ-デコード実行サイクルです。マシンコードの指示にはかなり低レベル(ないという単一指導).例えば、二つの番号な手順と意味のように:

  • 負荷のポインタのアドレスのオペランドが1.1登録
  • 負荷の値が格納されるアドレスの保存登録1.2登録
  • 負荷のポインタのアドレスのオペランド2への登録1
  • 負荷に格納された値のでアドレスの登録1.3登録
  • 追加内容の登録を2つ登録3、大切に保管してくださ登録4
  • 負荷のポインタの宛先に登録1
  • 店舗の内容を登録4には、指定されたアドレスの登録1

内プロセッサーの特別セットの高速メモリの名所として、登録ファイル、はメモリのプロセッサーを店舗にご来場いただきました皆様にはます。の登録ファイルは複数のレジスタは、独自に特定する。指示通常の作業の登録、特にRISC築;これは常に共通しているわけではない場合でも抽象化します。

通常はプロセッサーは、負荷や店舗のデータ登録を行います。業務等の計算の仕事にレジスタのオペランドからの登録をし、その結果、使用者の利益のために、ピーナッツギャラリー、 してい 使6502-きな混乱を課題-).プロセッサーの特別の指示荷重または保存データレジスタの主記憶.

プロセッサには特殊レジスタにカウンタープログラム"の店の住所は、次の操作を実行することを示しています。このように、配列の実行を指示が約のように:

  • フェッチの保存の現住所のプログラムです。
  • デコードの指導、ピッキングのほ実際の運用に当っては、どのレジスタを用い、対応モード"などで作品がんや店舗のデータ)やその他のビットの小物類.
  • を実行しました。

実行中の命令の変更の値が各種登録する例えば、負荷の指示をコピーします値への登録があります。演算または論理積(and、Or、Xor)という二つの値を計算します。ジャンプまたは支部の指示のままの住所変更プログラムのカウンターでのプロセッサがフェッチの指示とは異なる場所です。

プロセッサーのできる特別登録する例えば、プログラムカウンターます。他の代表的なものは状態フラグに登録できます。この数ビットの特殊な意味があります。例えばれる場合がありフラグを設定した場合、結果の算術演算ゼロであった。このための条件とします。を比較することができ二番号れば、同じゼロ'フラグが設定されます。プロセッサーのできる条件でのみ実行される場合このフラグを設定します。

この場合、減分のカウンターに登場合はゼロの状態フラグを設定します。条件付き(ゼロ)して使用可能なループが減分は、カウンター出口のループの複合加工はお任せ下さの軽減方法の指示がゼロになります。一部のプロセッサなどアームファミリー)すべての指示を条件と、スペシャル"いい状態のための非条件付きです。

一部の代表的なプロセッサーの指示は:

  • 増分または減分の登録
  • 負荷または店舗の内容を登録。対応させていただきまの住所への負荷や店舗のオフセットの内容によっても登録できます。ことができ、簡単にループ以上の配列データによるincrementingその他の登録があります。
  • 、加算、減算、乗算では、論理業務の計算値です。これらの取りのオペランドからの登録を果が上がっています。
  • ジャンプを別の場所をさせることができます。内容、場所、プログラムカウンターへのフェッチからの指示をオプションがあります。
  • 押しでもポップでの値をスタックです。

このstackoverflowポスト は小さなスニペットのCコードやアセンブリ言語から出力するスニペット.べきであるという例のような関係に高いレベルの言語のマシンコード出力で統です。

最良の方法を学ぶことはアセンブラにし、ぜひ利用してみてください。この利用や、より簡単なコンピュータのように8ビットのミクロスの1980年代最も近いものがこのタイプの建築の可能日の組込みシステム。また開発ボード組み込みプロセッサーのようにマイクロ化学チップの開発に成功日替正転車お貸しします。このアーキテクチャの少ない手荷物以外の現代経営システムが少ないi-打点、t-踏切用システムに発信します。このしくブートストラップアセンブリ言語プログラムのアーキテクチャをより簡単な建築も分かりやすいものになりました。

別のオプションをエミュレータなど SPIM.このエCPUおよびまたは組み立て、実行プログラムです。のようなエミュレータであること"についても施設のための単一のステッピングプログラム(のようなデバッガ)の内容を登録ファイルです。こするのに役立つかもしれない目的としているんです。

他のヒント

私は非常にあなたが本を読むことをお勧めしたい<のhref = "http://www.amazon.co.uk/Code-Language-DV-Undefined-Charles-Petzold/dp/0735611319/ref=sr_1_1 ?つまり= UTF8&S =ブック&QID = 1238404030&SR = 8-1" のrel = "noreferrer">コードに、それはコンピュータが異なるシステムから進化したかの詳細な履歴を与えます。

これは非常に魅力的だと物事は簡単な追加のマシンに至るまでモールス信号から進化して、いくつかのアセンブリに上どのように説明します。それはあなたのマシン命令がに解釈し、CPUなどのハードウェア、メモリ、で使用されている正確にどのようにの画像を与える必要があります。

私は最近、友人から見出した機械語以下の1つの以上の層は、実際にあります。それはMicrocodeと呼ばれています。

http://en.wikipedia.org/wiki/Microcode <:

詳細については、このWikipediaの記事を参照してください。 />

最も現実的なのは電流と電圧であると仮定しましょう (さらに深く掘り下げると、電子さえも抽象化されたものであることがわかるかもしれません)。抽象化の最初のステップは、+5V 電圧が「1」に設定されたビットを表し、0V 電圧が「0」に設定されたビットを表すと考えることです。スイッチを使用すると、ワイヤーの値を決定できます。

2 番目のワイヤと 2 番目のスイッチを使用すると、2 つのバイナリ値が得られます。これらを使って行う最も興味深いのは、バイナリ値を AND、OR、NOT などの演算と組み合わせることです。ここには 2 つの概念が関係しています。 トランジスタ 本物と 論理 抽象化のために。これにより、2 つのバイナリ入力に対して加算、減算、その他多くの演算を実行できます。さらにワイヤを追加して、「0」と「1」以外の値を表すことができます。この方向に進むと、 アル.

今度は時間を含めます。ALU から複数の結果が必要な場合は、入力データを一度に 1 つずつ提供する必要があるため、操作をシーケンスするためのクロックと制御ユニットが必要になります。また、入力値と結果を保存するためのメモリと、命令と監視のための入出力デバイスも必要です。この方向に進むと、 フォン・ノイマン建築, 、ほぼすべてのコンピューター アーキテクチャの基礎です。

次の抽象化レベルは、適切な電子機器を使用して、メモリ内のこの特定のビットが LCD ディスプレイの特定のピクセルを刺激することを決定するときです。


あなたはチャールズ・ペゾルドのコードに興味深いの読み取りを見つけるかもしれません http://www.amazon.co。英国/コード言語-DV-不定・シャルル・Petzold / DP / 0735611319

あなたの質問の前提が間違っています。何の格差はありません。ソフトウェアは、入力された電子的に保存されます。それは、人間は簡単に従うことができるように、ちょうどそのソフトウェアは、英語のような言語であなたに表示されている。

たとえばあなたがキーボードから「グリーンに私のデスクトップ画面の変更」と入力したときに、それは(どのようにキーボード/マウス/タッチスクリーン読む)電子的に金属に直接作業を行っています。それはあなたの画面上に英語のテキストとしてそれを見るだけのことです。さらに一歩を取り、あなたが入力したテキストは、CPUがそれにロジックを実行できるように、それはマシンコードに変換します、ハイレベル言語です。マシンコードは、電子形態です。例えば、テキストは、オペコードなどに変換されますが、オペコードは、電子フォームとCPUであるそれらを処理することができます。

一番下の行は、コンピュータ内部のすべては、それが入力された瞬間から電子形式であるということです。それはあなたのハードディスクやメモリ(トランジスタなど)のいずれかです。それはあなたの画面上のテキストでそれを見るだけのことです。

ここでも、分割はありません。メモリに保存されているソフトウェア(トランジスタなど)やハードディスクは、電子的にすでに存在しています。ハードウェア(ハードロジック - ゲートが)(あなたは、ハードウェアがソフトウェアに何をしたいのか)ソフトウェアを実行するために必要とされます。あなたは非電子形式でコンピュータに何を入力することはできません。

私は、これは理にかなって願っています。

でも、実際の点が満たすハードウェアによって異なりを確認することができます。でも映像の臨場感をさらに引き立たせ(優)の例を表示する"text":

から抽象的ハードウェア:

  • ユーザーの種類文字の彼女のワードプロセッサ(wp)
  • wpソフトウェアに初出店の文字メモリの一部として文書編集されている
  • wpソフトウェアそしてこのユーザインタフェースの図書館を使用することが示されているテキストの編集ウィンドウ(こう続けました。UIのデータをダウンロードされシステムに依存します(Windows API MS Windows、X Windows QT。Linuxの場合、AWT/Swing Javaなど)
  • UI図書館のデータを通じて少し抽象化層です。特に、実ラスター化に変換し、情報表示"A"のピクセルのグリッドを表す)
  • そのため、最終的に情報を渡すためのデバイスドライバのグラフィックカードです。ここにお応えします"リアル"ハードウェア:-).通常、グラフィックカードの公開"のビデオメモリ"、すなわちメモリーカードのCPUから書き込みを行うことができま.グラフィックカードドライバー(走行時のCPU)記の画素A画像メモリの.
  • のグラフィックカードの回路を読み込みのビデオメモリやデータに変換しい映像信号を出ビデオコネクタのカードやモニターに映し出されるのです。
  • モニターに表示さったと思う:-)

この説明できない場合もacademicalがこのようにのんびりと理解ではなく大学)。

最初のステップを Boole's"代数学とは、19番目の世紀る数学的操作を表現できるシリーズのシンボルとも関連する。この10を底とする演算の共通+,-,*,/事業者で表現することができるので使用だけのシンボル(0,1/true,false)と論理演算と、など)のサンプルコードを示しますが、数学の基盤をデジタルコンピューティング

第二段階は チューリング's"作成の数理モデルの仮想機械加工-記号です。のナイーブプログラミング言語のコンピュータのいずオートマトンとメモリを格納状態)、運営しているシリーズの記号を表すものと解釈した別系列の一連の記号を定義する遷移状態です。

現代のデジタルプロセッサの実装のチューリング機械を使用するBooleの論理代数学のシンボルとして、オペレーターベース(みかんの作品 についての詳しい説明Booleの考).デジタル化できなかった理由は、true/falseの論理的状態を簡単にマップされた電気信号(+,-)とそれに関連した事で実現できるトランジスタ回路と定のバイナリの入力電気信号)を出力することが可能での結果によるbooleanです。の者で、現代のコンピュータは機とメモリ 店舗の状態(エンコードされたバイナリの電気的-磁気形)の配列回路における電気刺激に対し、事業者(プロセッサーの指示および出力結果に従って、非常に速い速度です。

このように各プログラムは実行にそのいずれかのコンピュータ言語と翻訳のコンパイラまたはランタイムをつなぐ"のミッションのbooleanのための業務プロセッサーの実行

1が行くことができるように、

マシンコードは、私は信じている、などの低レベルです。これは、直接、プロセッサにより理解及び解釈せずに実行されます。プロセッサは、所与のアーキテクチャ(x86の、PPC、ARMなど)のためのマシンコードを定義する命令の特定のセットを用いて構築されています。

画面上に文字を描画するからパイを計算することにすべてがマシンコードで実行する最も基本レベル、で、です。画面上に文字を描画する文字の高さ、色、およびピクセル位置を計算し、映像出力装置を使用して画面上にプロットし、いくつかのマシンコードを作成するだけである。

あなたは、プロセッサがメモリにアクセスする方法を知っていれば、

さて、あなたはすでに答えを知っています。メモリおよび他のハードウェアは、プロセッサが「メモリIOマップされ」または「IOはIOをマッピングされた」を使用し天気をに応じて、中(ほぼ)同じ方法でアクセスされます。最初のケースでは、プロセッサは、ただ読んで、メモリアドレスへの書き込みしようとします - しかし、そこにはメモリがない代わりに - それはいくつかの他のハードウェアデバイスだが、プロセッサは本当に違いを見分けることはできません。後者の場合は、非常に類似している。

あなたは、プロセッサがメモリにアクセスする方法について見当もつかない場合は、

一方で、あなたは「アドレスバス」と「データ・バスは、」あなたが始めるために何であるか調べる必要があります。

あなたはそれが間違って取得している。

すべてのコンピュータは、それが画面上の文字を示すか、いくつかの計算を行うことなく、銀行口座にお金のような抽象的な概念の操作に電流から、抽象度の異なる(多くの)レベルで見ることができます。

簡単なマイクロプロセッサ回路を構築し、前記すなわち、そのハードALU、いくつかのレジスタと一部の制御ロジックではありません。アルテラは、Cyclone IIスターター・ボードのため、このような高度なチュートリアルを持っているが、私はウェブ上でそれを見つけることができません。

ここでは、実際の契約です。私の出発点。すべてが動作するためにエネルギーを必要とします。オン/オフは、限界内で定義されています。例えば、もし3〜5 Vはなら未満3ボルトそのオフになります。モールスコードのコンセプト。私が作るか、センサーを購入する必要があるので、私は温度計に取り組んでいます。その後、私はそれを校正する必要があります。信号から温度への信号又は信号の強度信号を変換しません。私は今の私ところです。

これは、1つの文章で答えるのは簡単ではありません。コンピュータアーキテクチャについての本を読んで、いくつかのアセンブリを学び、私はあなたがこの問題が発生した方法を理解するであろうと確信しています。

私たちは、任意のキーを入力するか、実際に私たちは回路を完成されているキーを押すことにより、小型電波が原因になった後、任意のコマンドを与えた場合、

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top