54

私は過去 3 ~ 5 年間、C と CPython で作業してきました。ここが私の知識のベースだと考えてください。

MOV AL, 61hそれをサポートするプロセッサなどにアセンブリ命令を使用する場合、このコードを解釈して電圧信号としてディスパッチするプロセッサの内部には正確には何がありますか? そのような簡単な指示はどのように実行されるでしょうか。

MOV AL, 61hまたはに含まれる多数のステップを考えようとすると、アセンブリは高級言語のようにさえ感じますXOR EAX, EBX

編集: x86 ファミリが組み込みシステムで一般的ではない場合に、なぜこれを組み込みとして配置するのかを尋ねるいくつかのコメントを読みました。私自身の無知へようこそ。私がこれについて無知であれば、おそらく他の人も同様に無知であると思います.

皆様の回答に力を入れていることを考えると、お気に入りの回答を選ぶのは難しかったのですが、決断せざるを得ない気持ちになりました。けがをする必要はありません。

コンピュータについて学べば学ぶほど、自分が実際に知っていることに気が付かなくなることがよくあります。マイクロコードとトランジスタロジックに私の心を開いてくれてありがとう!

XOR EAX, EAX編集 #2: このスレッドのおかげで、が よりも速い理由がわかりましたMOV EAX, 0h。:)

4

12 に答える 12

40

私は最近、Charles Petzold の Code というタイトルの本を読み始めました。しかし、私は最後まで読んだわけではないので、購入/借りる前にまず本を読んでください.

これは私の比較的短い答えであり、Petzolds ではありません...そしてうまくいけば、あなたが興味を持っていたことと一致しています。

私が推測するトランジスタについて聞いたことがあるでしょう。トランジスタの本来の用途は、トランジスタラジオなどでした。それは基本的に増幅器であり、空気中に浮遊する小さな小さな無線信号を受け取り、トランジスタの入力に供給します。トランジスタは、隣の回路の電流の流れを開閉します。そして、その回路をより高い電力で配線すると、非常に小さな信号を取得して増幅し、たとえばスピーカーに供給して、ラジオ局を聞くことができます(周波数を分離し、トランジスタのバランスを保つにはもっと多くのことがありますが、あなたは私が望む考えを得る)。

トランジスタが存在するようになったのは、トランジスタを電灯のスイッチのようにスイッチとして使用する方法でした。ラジオは調光スイッチのようなもので、オンからオフまでどこでも切り替えることができます。調光器のない照明スイッチは、すべてオンまたはすべてオフのいずれかであり、スイッチの中央に切り替えられる魔法の場所があります。デジタルエレクトロニクスでもトランジスタを同じように使用しています。1 つのトランジスタの出力を取り、それを別のトランジスタ入力に供給します。最初の出力は確かに電波のような小さな信号ではなく、2 番目のトランジスタを強制的にオンまたはオフにします。これは、TTL またはトランジスタ - トランジスタ ロジックの概念につながります。基本的に、高電圧を駆動する、またはそれを1と呼ぶことができる1つのトランジスタがあり、その上でゼロ電圧をシンクし、それを0と呼びましょう. そして、AND ゲート (両方の入力が 1 の場合、出力は 1)、OR ゲート (どちらか一方の入力が 1 の場合、出力は 1) を作成できるように、入力を他の電子回路と一緒に配置します。 . インバーター、NAND、ゲート、NOR ゲート (またはインバーター付き) など。以前は TTL ハンドブックがあり、1 つまたは 2 つまたは 4 つの何らかのゲート (NAND、NOR、 AND など) 内部で機能し、それぞれに 2 つの入力と出力があります。現在、プログラマブルロジックや何百万ものトランジスタを備えた専用チップを作成する方が安価であるため、それらは必要ありません。しかし、ハードウェア設計では AND、OR、NOT ゲートの観点から考えています。(通常は nand と nor に似ています)。OR ゲート (どちらか一方の入力が 1 の場合、出力は 1 になります)。インバーター、NAND、ゲート、NOR ゲート (またはインバーター付き) など。以前は TTL ハンドブックがあり、1 つまたは 2 つまたは 4 つの何らかのゲート (NAND、NOR、 AND など) 内部で機能し、それぞれに 2 つの入力と出力があります。現在、プログラマブルロジックや何百万ものトランジスタを備えた専用チップを作成する方が安価であるため、それらは必要ありません。しかし、ハードウェア設計では AND、OR、NOT ゲートの観点から考えています。(通常は nand と nor に似ています)。OR ゲート (どちらか一方の入力が 1 の場合、出力は 1 になります)。インバーター、NAND、ゲート、NOR ゲート (またはインバーター付き) など。以前は TTL ハンドブックがあり、1 つまたは 2 つまたは 4 つの何らかのゲート (NAND、NOR、 AND など) 内部で機能し、それぞれに 2 つの入力と出力があります。現在、プログラマブルロジックや何百万ものトランジスタを備えた専用チップを作成する方が安価であるため、それらは必要ありません。しかし、ハードウェア設計では AND、OR、NOT ゲートの観点から考えています。(通常は nand と nor に似ています)。現在、プログラマブルロジックや何百万ものトランジスタを備えた専用チップを作成する方が安価であるため、それらは必要ありません。しかし、ハードウェア設計では AND、OR、NOT ゲートの観点から考えています。(通常は nand と nor に似ています)。現在、プログラマブルロジックや何百万ものトランジスタを備えた専用チップを作成する方が安価であるため、それらは必要ありません。しかし、ハードウェア設計では AND、OR、NOT ゲートの観点から考えています。(通常は nand と nor に似ています)。

彼らが今何を教えているのかはわかりませんが、概念は同じです。メモリの場合、フリップフロップは、これらの TTL ペア (NANDS) の 2 つが結合され、一方の出力が他方の入力に接続されていると考えることができます。それは置いておきましょう。これは基本的に、SRAM またはスタティック RAM と呼ばれるものの 1 ビットです。sram は基本的に 4 つのトランジスタを使用します。ドラムまたはダイナミック ram コンピューターに自分で挿入したメモリ スティックは、1 ビットあたり 1 つのトランジスタを使用します。Sram ビットは、電源が切れない限り、設定した内容を記憶しています。ドラムは、あなたがそれを言うとすぐにあなたが言ったことを忘れ始めます. 充電して充電器のプラグを抜くとすぐに、放電が始まります。それぞれのガラスに小さな穴が開いた棚に並べられたグラスを考えてみてください。これらはあなたのドラムビットです。あなたはそれらのいくつかを1つにしたいので、あなたが1つにしたいグラスをアシスタントに満たしてもらいます。そのアシスタントは常にピッチャーを満たし、列を下って行き、「1」のビット グラスに十分な水を入れておき、「0」のビット グラスを空のままにしておく必要があります。そのため、いつでもデータが何であるかを確認したい場合は、中央より確実に上の水位が 1 であり、中央よりも確実に下の水位がゼロである水位を探すことで、1 と 0 を調べて読み取ることができます。電源を入れた状態で、アシスタントが 1 と 0 を区別するのに十分な量のグラスを維持できない場合、それらは最終的にすべてが 0 のように見えて排出されます。チップあたりのビット数を増やすというトレードオフです。ここでの簡単な話は、プロセッサの外側では大容量メモリにドラムを使用し、1 を 1 に、ゼロを 0 に保つアシスタント ロジックがあるということです。ただし、チップ内では、たとえば AX レジスタと DS レジスタは、フリップフロップまたは SRAM を使用してデータを保持します。そして、AX レジスターのビットのように知っているすべてのビットに対して、その AX レジスターに出入りするビットを取得するために使用される可能性がある数百または数千以上のビットがあります。また、1 を 1 に、0 を 0 に維持するアシスタント ロジックがあります。ただし、チップ内では、たとえば AX レジスタと DS レジスタは、フリップフロップまたは SRAM を使用してデータを保持します。そして、AX レジスターのビットのように知っているすべてのビットに対して、その AX レジスターに出入りするビットを取得するために使用される可能性がある数百または数千以上のビットがあります。また、1 を 1 に、0 を 0 に維持するアシスタント ロジックがあります。ただし、チップ内では、たとえば AX レジスタと DS レジスタは、フリップフロップまたは SRAM を使用してデータを保持します。そして、AX レジスターのビットのように知っているすべてのビットに対して、その AX レジスターに出入りするビットを取得するために使用される可能性がある数百または数千以上のビットがあります。

プロセッサは、最近では毎秒 2 ギガヘルツまたは 20 億クロック程度のクロック速度で動作することを知っています。クリスタルによって生成されるクロックについて考えてみてください。これは別のトピックですが、ロジックはそのクロックを電圧が高くなり、高くなり、ゼロになり、このクロック レート 2 GHz などでゼロになると見なします (ゲームボーイの進歩は 17 mhz、古い iPod は約 75 mhz、オリジナルの IBM PC 4.77MHz)。

そのため、スイッチとして使用されるトランジスタを使用すると、電圧を取得して、ハードウェア エンジニアとソフトウェア エンジニアの両方が熟知している 1 と 0 に変換することができ、AND、OR、および NOT 論理関数を提供することもできます。そして、電圧の正確な振動を得ることができるこれらの魔法の結晶があります。

したがって、たとえば、クロックが 1 で、状態変数がフェッチ命令状態にあることを示している場合、いくつかのゲートを切り替えて、必要な命令のアドレスを取得する必要があります。プログラム カウンタがメモリ バスに出力され、メモリ ロジックが MOV AL,61h の命令を出すことができます。これを x86 のマニュアルで調べると、これらのオペコード ビットのいくつかは、これが mov 操作であり、ターゲットが EAX レジスタの下位 8 ビットであり、mov のソースが即値であることを示していることがわかります。この命令の後のメモリ位置にあります。そのため、その命令/オペコードをどこかに保存し、次のクロック サイクルで次のメモリ位置をフェッチする必要があります。これでmovalが保存されました

あなたが尋ねるすべてはどのように起こりますか?数式を実行する Python 関数について考えてみましょう。変数として入ってくる式へのいくつかの入力でプログラムの先頭から始めます。ここに定数を追加したり、ライブラリから平方根関数を呼び出したりするプログラムの個々のステップがあります。答えを返す。ハードウェア ロジックも同じように行われ、今日ではプログラミング言語が使用されていますが、そのうちの 1 つは C によく似ています。主な違いは、ハードウェア関数には数百または数千の入力があり、出力は 1 ビットであることです。すべてのクロック サイクルで、AL レジスタのビット 0 は、どれだけ遠くを見たいかに応じて巨大なアルゴリズムで計算されます。数学演算のために呼び出した平方根関数について考えてみましょう。その関数自体は、いくつかの入力が出力を生成するこれらの 1 つであり、乗算または除算などの他の関数を呼び出す場合があります。したがって、AL レジスタのビット 0 の前の最後のステップと考えることができるビットがどこかにある可能性が高く、その機能は次のとおりです。そうでなければ AL[0] = AL[0]; しかし、他の入力から計算された次のビットを含む上位関数があり、上位関数と上位関数があり、これらの多くは、Python の 3 行が数百または数千に変わるのと同じ方法でコンパイラによって作成されます。アセンブラの行の。数行の HDL が、数百、数千、またはそれ以上のトランジスタになる可能性があります。ハードウェア関係者は通常、特定のビットの最下位レベルの式を調べて、可能なすべての入力と、計算に必要なすべての AND と OR と NOT を調べます。しかし、あなたが望むなら、あなたはできます。

マイクロコーディングに関する注意。ほとんどのプロセッサはマイクロコーディングを使用していません。たとえば、x86は当時としては優れた命令セットでしたが、表面的には現代に追いつくのに苦労しているため、x86に夢中になります。他の命令セットはマイクロコーディングを必要とせず、上で説明した方法でロジックを直接使用します。マイクロコーディングは、表面的に見える命令セットをエミュレートする別の命令セット/アセンブリ言語を使用する別のプロセッサと考えることができます。Mac で Windows をエミュレートしたり、Windows で Linux をエミュレートしたりするときほど複雑ではありません。中にはもっとたくさんいます。そして当然のことながら、その 1 つのアセンブリ プログラムは、1 つまたは複数のコアの複数の実行パスで何らかの方法で実行できます。目覚まし時計や洗濯機のプロセッサと同じように、マイクロコード プログラムはシンプルで小さく、デバッグされてハードウェアに焼き付けられるため、ファームウェアの更新は必要ありません。少なくとも理想的には。しかし、たとえば iPod や電話のように、バグ修正などが必要な場合があり、プロセッサをアップグレードする方法があります (BIOS またはその他のソフトウェアは起動時にパッチをロードします)。テレビのリモコンまたは電卓のバッテリー コンパートメントを開くと、3 つまたは 5 つまたは多くのベア メタル接点が一列に並んでいる穴が見える場合があります。一部のリモコンと電卓については、本当に再プログラムしたい場合は、ファームウェアを更新してください。通常はそうではありませんが、理想的には、そのリモコンは完璧であるか、テレビよりも長持ちするのに十分完璧です. マイクロコーディングにより、非常に複雑な製品 (数百万、数億個のトランジスタ) を市場に投入し、現場で修正可能な大きなバグを後で修正することができます。チームがたとえば 18 か月で作成した 2 億行の Python プログラムを想像してみてください。フィールドで更新できるコードのごく一部を除いて、同じ種類のもので、残りは石に刻まれたままにしておく必要があります。目覚まし時計やトースターの場合、バグがある場合や助けが必要な場合は、捨てて別のものを入手してください。市場に出回っている数億個のトランジスタ) を開発し、現場で修正可能な大きなバグを将来的に修正します。チームがたとえば 18 か月で作成した 2 億行の Python プログラムを想像してみてください。フィールドで更新できるコードのごく一部を除いて、同じ種類のもので、残りは石に刻まれたままにしておく必要があります。目覚まし時計やトースターの場合、バグがある場合や助けが必要な場合は、捨てて別のものを入手してください。市場に出回っている数億個のトランジスタ) を開発し、現場で修正可能な大きなバグを将来的に修正します。チームがたとえば 18 か月で作成した 2 億行の Python プログラムを想像してみてください。フィールドで更新できるコードのごく一部を除いて、同じ種類のもので、残りは石に刻まれたままにしておく必要があります。目覚まし時計やトースターの場合、バグがある場合や助けが必要な場合は、捨てて別のものを入手してください。

ウィキペディアまたは単にグーグルのものを掘り下げると、6502、z80、8080、およびその他のプロセッサなどの命令セットと機械語を見ることができます。8 つのレジスタと 250 の命令があるかもしれません。トランジスタの数から、250 のアセンブリ命令が、クロックごとにフリップフロップの各ビットを計算するのに必要な一連の論理ゲートと比較して、依然として非常に高水準の言語であることがわかります。サイクル。あなたはその仮定で正しいです。マイクロコード化されたプロセッサを除いて、この低レベルのロジックは再プログラム可能ではありません。ハードウェアのバグをソフトウェアで修正する必要があります (ハードウェアが提供され、廃棄されていない場合)。

あのペツォルドの本を調べてみてください。

于 2010-09-14T23:01:09.177 に答える
19

編集: トランジスタ レベルで python/javascript を使用してシミュレートされた CPU (6502) の例を次に示します

編集: 優れた 10 000m レベル ビュー : 新しいマシンの魂 - トレイシー キダー

マイクロコーディングを行うまで、これを想像するのは非常に困難でした。それからそれはすべて(抽象的に)理にかなっています。これは複雑なトピックですが、非常にハイレベルな視点です。

本質的にはこのように考えてください。

CPU 命令は、基本的に、メモリを構成する電気回路に格納された一連の電荷です。それらの電荷をメモリからCPUの内部に転送する回路があります。CPU 内に入ると、電荷は CPU 回路の配線への入力として設定されます。これは本質的に、より多くの電気出力を発生させる数学関数であり、サイクルが継続します。

最新の CPU ははるかに複雑ですが、多くのレイヤーのマイクロコーディングが含まれていますが、原理は同じままです。メモリは料金のセットです。電荷を移動する回路があり、機能を実行する他の回路は、メモリまたは他の機能を実行する他の回路に供給される他の電荷 (出力) をもたらします。

メモリがどのように機能するかを理解するには、論理ゲートと、それらが複数のトランジスタからどのように作成されるかを理解する必要があります。これは、本質的に数学的な意味で機能を実行するという意味で、ハードウェアとソフトウェアが同等であるという発見につながります。

于 2010-09-14T04:04:19.280 に答える
14

これは、説明するために StackOverflow に関する回答以上のものを必要とする質問です。

これについて、最も基本的な電子部品から基本的なマシン コードまでを学ぶには、Horowitz と Hill による The Art of Electronics をお読みください。コンピュータ アーキテクチャの詳細については、Patterson と Hennessey による Computer Organization and Design を参照してください。より高度なトピックについて知りたい場合は、Hennessey と Patterson による Computer Architecture: A Quantitative Approach を読んでください。

ちなみに、The Art of Electronics には付属のラボ マニュアルもあります。時間とリソースが利用できる場合は、ラボを行うことを強くお勧めします。私は実際にトム・ヘイズが教えたクラスを受講しました。そこでは、さまざまなアナログおよびデジタル回路を構築し、最終的に 68k チップ、いくつかの RAM、いくつかの PLD、およびいくつかのディスクリート コンポーネントからコンピューターを構築しました。16 進数のキーパッドを使用してマシン コードを RAM に直接入力します。とても楽しかったし、コンピュータの最も低いレベルで実際に体験するのに最適な方法でした。

于 2010-09-14T04:04:45.473 に答える
13

システム全体を詳細に説明することは、本全体がなければ不可能ですが、単純化されたコンピューターの非常に高レベルの概要を以下に示します。

  • 最下位レベルには、物理​​学と材料があります (たとえば、ドープされたシリコンで作られたトランジスタ)。
  • 物理学と材料を使用して、 NAND 論理ゲートを導き出すことができます。
  • NAND ゲートを使用すると、他のすべての基本的な論理ゲート (AND、OR、XOR、NOT など) を派生させることができます。または、2 つ以上の入力を持つバージョンを含め、トランジスタから直接構築して効率を上げることができます。
  • 基本的な論理ゲートを使用して、加算器マルチプレクサなどのより複雑な回路を導き出すことができます。
  • また、基本的な論理ゲートを使用して、フリップフロップクロックなどのステートフルなデジタル回路要素を導出できます。
  • より複雑な堂々たる回路を使用して、 counter 、memoryregisterarithmical -logic-unitなどの高レベルの部分を派生させることができます。
  • 次のように、高レベルのピースを接着する必要があります。
    • 値がメモリから出てくる
    • 値は、マルチプレクサなどを使用して適切な場所 (ALU またはメモリなど) にディスパッチすることにより、命令として解釈されます。メモリー、レジスターでの実行操作、および条件付き命令へのジャンプ)。
    • このプロセスは次の命令で繰り返されます

アセンブリ命令がどのように電圧変化を引き起こすかを理解するには、これらの各レベルが下のレベルでどのように表されるかを理解する必要があります。たとえば、ADD 命令は、2 つのレジスタの値を、すべての論理演算を計算する回路を持つ ALU に伝搬させます。次に、命令から ADD 信号を受け取った反対側のマルチプレクサが目的の結果を選択し、それがレジスタの 1 つに伝搬されます。

于 2010-09-15T21:48:24.857 に答える
8

これは大きな問題であり、ほとんどの大学では、1 学期の授業全体で答えを出しています。ですから、この小さな箱にひどく解体された要約を与えるのではなく、代わりに、完全な真実を含む教科書を紹介します: Computer Organization and Design: The Hardware/Software Interface by Patterson and Hennessey .

于 2010-09-14T04:01:27.040 に答える
7

より簡単な紹介ですが、ワイヤアップからコンピューターへの非常に優れた紹介です
http://img.amazon.com/images/I/31GBgcA5PML._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU15_.jpg

チャールズ・ペツォルドのコード

于 2010-09-14T04:07:01.803 に答える
5

非常に簡単に言えば、

機械語命令は、一連のビットとしてプロセッサ内に格納されます。プロセッサのデータシートを調べるMOVと、命令に固有の (たとえば) 0xA5 のような 16 進値があることがわかりますMOV.. (さまざまな値を持つさまざまな種類のMOV命令がありますが、無視しましょうとりあえずそれ)。

0xA5 hex == 10100101 binary.

MOV*(これはX86の実際のオペコード値ではありません- 説明のために値を選択しているだけです)。

プロセッサ内部では、これは「レジスタ」に保存されます。これは、実際には電圧を保存するフリップフロップまたはラッチの配列です。

+5 0 +5 0 0 +5 0 +5

これらの各電圧は、ゲートまたはゲートの集合の入力に供給されます。

次のクロック エッジで、これらのゲートはレジスタからの入力電圧に基づいて出力を更新します。

これらのゲートの出力は、別のレベルのゲートにフィードされるか、それら自体に戻されます。そのレベルは次のレベルにフィードされ、次のレベルにフィードされます。

最終的に、ゲート出力は別のラッチ/フリップフロップ (内部メモリ)、またはプロセッサの出力ピンの 1 つに接続されます。

Register->(clock)->Gate A->(clock)->Gate B->pin
                                          ->latch

(異なるゲート タイプと上位構造のフィードバックは無視します)

これらの操作は、コア アーキテクチャで定義されているように、ある程度並行して行われます。「より高速な」プロセッサ (2.0GHz と 1.0GHz など) のパフォーマンスが優れている理由の 1 つは、クロック速度 (GHz 値) が高速であるほど、ゲートの集合から次の集合への伝搬が速くなるためです。

非常に高いレベルで、プロセッサが行うのはピン電圧の変更だけであることを理解することが重要です。PC などのデバイスを使用するときに目にする見事な複雑さはすべて、ゲートの内部パターンと、他の CPU、RAM などのプロセッサに接続された外部デバイス/周辺機器のパターンに由来します。プロセッサとは、そのピンが電圧を変化させるパターンとシーケンスであり、ある瞬間の CPU の状態が次の状態に寄与することを可能にする内部フィードバックです。(アセンブリでは、この状態はフラグ、命令ポインター/カウンター、レジスター値などで表されます。)

非常に現実的な方法で、各オペコード (マシン コード命令) のビットはプロセッサの内部構造に物理的に関連付けられています (ただし、必要に応じて、内部ルックアップ テーブル/命令マップを使用してある程度抽象化することができます)。

それが役立つことを願っています。また、私は優れた EE 教育を受けており、組み込み開発の経験が豊富であるため、これらの抽象化は私には理にかなっていますが、初心者にとってはあまり役に立たないかもしれません。

于 2010-09-16T15:46:02.310 に答える
1

デジタル回路の最も基本的な要素は、ロジック ゲートです。論理ゲートを使用して、ブール演算を実行する論理回路、またはデコーダー、またはフリップフロップなどの順序回路を構築できます。フリップフロップは 1 ビットのメモリと考えることができます。これは、カウンターやレジスター (ビット配列) などのより複雑な順序回路の基礎となります。

マイクロプロセッサは、単なるシーケンサーとレジスタの集まりです。マイクロプロセッサへの「命令」は、特定のシーケンスをトリガーして「データ」に対して計算を実行するために、いくつかのレジスタに順次プッシュされるビットのパターンにすぎません。データはビットの配列として表されます...そして今、私たちはより高いレベルにいます.

于 2010-09-14T04:30:44.827 に答える
1

「Microprocessor Design」という本の下書きは、現在Wikibooks でオンラインになっています。

いつの日か、その質問に対する優れた答えが含まれることを願っています。それまでの間、その質問に対する回答の現在のラフ ドラフトから何かを学ぶことができ、改善に役立てたり、少なくとも説明を忘れたり、説明がわかりにくい部分を指摘したりすることができます。

于 2010-09-16T15:32:48.870 に答える
1

さて、ここにひどく解体された要約があります:-)

MOV AL, 61h もまた、アセンブラに供給される人間が読める形式のコードです。アセンブラは、基本的にプロセッサが理解する一連のバイトであり、メモリに保存するものである同等の 16 進コードを生成します。組み込みシステム環境では、リンカー スクリプトを使用して、これらのバイトをメモリ内のどこに配置するか (プログラム/データ用に別の領域など) を細かく制御できます。

プロセッサには基本的に、フリップフロップを使用して実装された有限状態マシン (マイクロコード) が含まれています。マシンは、メモリから「MOV」の 16 進コードを読み取り (フェッチ サイクル)、オペランド (この場合は 61h) が必要であることを判断 (デコード サイクル) し、再びメモリからそれをフェッチして実行します (つまり、61 をコピーします)。アキュムレータ レジスタに入力します。「読み取り」、「フェッチ」、「実行」などはすべて、加算器、減算器、マルチプレクサなどのデジタル回路を使用してシフト レジスタにバイトがシフトインおよびシフト レジスタから追加されることを意味します。

于 2010-09-14T10:03:29.400 に答える
0

私はそれについて考えていて、狂ったようにグーグルで検索しています。人々は「ブラ ブラは RAM に書き込む」などと答えますが、私はその「書き込み」が何を意味するのかに非常に興味があります。

あなたはいつもコードを入力することから始めますよね?次に、コンパイル、アセンブリ、マシンコードなどを取得します...どのようにしてトランジスタの電圧に変わりますか? ちょっと待って!ここで少し戻りましょう。コードを入力しているとき、どの言語でも「print 'Hello World'」と書きたいとします。キーボードの "p" ("print" の最初の文字) を 2 番目に押すと、壁のコンセントから供給される電流が、特定のパスを介して特定のトランジスタ セットに実際に再ルーティングされます。したがって、実際には、このステップですでに 0V と +5V を保存しています。後で生成されません!

後のステップでこれらの電圧がどのようにフラッシュされるかは、すべてのレベルで電気科学です。

これがあなたの質問に答えることを願っています。

于 2015-09-22T08:36:02.607 に答える
0

このコードを解釈し、電圧信号としてディスパッチするプロセッサの内部には正確に何がありますか

「ハードウェア」と言いたいところですが、より正確な答えは「マイクロコード」です。

于 2010-09-14T15:28:23.340 に答える