Linuxカーネルは、コードの一部をアセンブラーからCに変更します

プログラミング言語c

すべての人に知られているのは アセンブラ言語が最速です いくつかの問題のために、そしてこの理由のために、それは異なるオペレーティングシステムのカーネルで最も使用されており、同じことが高度な電子機器が使用されるリアルタイムプロジェクトでも起こります。 問題は後で発生します。そのコードを維持する必要があり、維持する必要がないためです。 Linuxカーネルの場合、開発者はそのアセンブラーコードをCに変換することを選択しました.

Cは最も代表的なLinuxプログラミング言語です(実際、すべての* nixプラットフォームの中で)、それはによって開発されました デニス·リッチー 1972年にKenThompsonは、Unix PDP-11システムで作成され、Unixバージョン2の一部でした。その高いパフォーマンスと移植性により、オペレーティングシステムの実装でますます使用されるようになりました。 リーナス·トーバルズ 彼は1990年に、Minixの無料でオープンな代替品を探していたときに、プロジェクトにそれを使用しました。

もちろん、非常に多くの長所があるにもかかわらず、最初に述べたように、アセンブラーにはCに比べていくつかの利点があるため、この決定は驚きましたが、 コメントAndyLutomirsky カーネルメーリングリストでは、作業は順調に進んでおり、 Linuxカーネル4.1 このアセンブラソースコードをCに書き換えた最初の製品になります。 具体的には、ユーザーモードへの終了に関連するすべてのものが、現在これらXNUMXつのプログラミング言語のコードの混合で構成されていますが、メンテナンスが少ないため、更新時にますます複雑になっています。

それは アセンブラのコード 長い間更新されていないため、新しい開発者はその操作について完全に明確ではなく、さらに悪いことに、更新するのは簡単ではありません。 したがって、部分的な変更を試みる代わりに、すべてのアセンブラルーチンをCに変更し始めることを選択しました。個人的には、実行速度がいくらか失われる可能性があると思います(コードC newが効率的である場合は最小限になる可能性があります)。 新しくて明確なコードは、古く、更新の可能性がほとんどないものよりも常に望ましいものです。 それがどのように実装されたかがよく理解されていないからです。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:AB Internet Networks 2008 SL
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   ミゲルマショルトゥル

    そもそもスペイン語でENSAMBLADORです。

    第二に、すべての言語はコンパイル(または解釈)されなければならないので、結果の良さはコンパイラ(またはインタプリタ)に依存します

    Cコンパイラは大幅に改善され、アセンブラはほとんど改善されていないため(すでに非常に優れていたため)、現在、Cで記述されたコンパイル済みプログラムと、アセンブラで記述された同じプログラムとの違いはごくわずかであるか、存在しません(それ以前)。ではありませんでした)。
    コンパイルされたプログラム(Cなど)とインタプリタされたプログラム(Javaなど)の違いも大幅に最小限に抑えられています。

    したがって、アセンブラよりもCの保守がはるかに簡単であるため、費用便益分析、弱点、脅威、長所と機会、またはその他の機能する場合に、カーネルでこれらの変更を行うことは非常に適切な決定です。
    意思決定のため。

    1.    Chigüireバイポーラ

      Miguel Mayol Turへ:まず第一に、XNUMX人であると主張するすべてのプログラマーはアセンブラーを話し、英語を理解します。 他の人はVisualBasicを使用し、自分たちをプログラマーと呼んでいます。 残念だ。 そして第二に、アセンブラはコンパイルしません。 それを処理するプログラムは、ニーモニックを直接バイトに変換します。 アセンブラーでのプログラミングは同じ言語でマシンと話しますが、少し簡単にするために、対応するバイトを直接書き込む代わりにニーモニックが使用されます。 バイトのセットとアセンブラの命令の間にはXNUMX対XNUMXの対応があります。 しかし、もちろん、これは実際のプログラマーだけが知っています。ASSEMBLERと言う人のXNUMX人です。 したがって、プログラマーがその改善を担当するため、アセンブラーからオペコードへの「コンバーター」の改善はありません。 Cコンパイラ(および他の言語)は、命令をアセンブラ(またはマシンコード)の事前に確立されたマクロ表現に変換し、それらの変換がどのように行われるかによって改善が行われます。
      なぜCを使うのですか? 読みやすいものを確認して維持する方が簡単だからです。 ほとんどの人は、アセンブラのオペコードやニーモニックを直接理解していません。 そのような単純な。
      昔は標準として課されていたが、今ではコードを理解している人たちに嫌われているJavaについては、わざわざ話さない。
      しかし、私を信じないでください、私がここで言ったことが間違っているかどうかグーグルに尋ねてください。
      よろしく

      1.    エリウギック

        こんにちはChigüire、私の目はあなたがアングロサクソン起源の用語を使わずにスペイン語で書くことができないと思って私の顔から落ちます:それは「アセンブラー」と言われています。
        もちろん、私があなたに同意することのXNUMXつとして、Javaについては話さない方がよいでしょう。ナンセンスと言うのは、Javaをそのままにしておく方がよいからです。 私にはあなたのような友人がいましたが、大工(専門のプログラマーではありません)でした。彼は、ハンドソーやその他のツールは言うまでもなく、それでネジを締めることさえできたと言いました。 従うべき例はなんでしょう!

  2.   ルイス・ジェラルド・マリン

    英語は常にすべての計算用語の根底にあります。 私たちスペイン語話者がそれを望まなくても、それはそうです。 これに加えて、「ビット」、「バイト」、「unix」、「linux」、「DOS」などと翻訳できない用語があります。 そして、翻訳できるものもありますが、「CMOS」、「CSS」、「RAM」などはありません。テクノロジーとは関係のないイニシャルがいくつかあり、それを締めくくるには、それらは存在しません。グーグル。 生成されたメッセージが読めない場合、翻訳しても意味がありません。 結論:技術的または計算上の問題では、英語の専門用語を使用することが望ましいです。 同じ理由で、私は「windows」を使用して、オペレーティングシステム「windows」を使用していると書くことを好みます。 そして、私はCSSについて話し、type =»text / cssを使用することを好みます。それは、私が«斜めのテキストスタイルシートと等しいタイプのスタイルシートシート»を使用すると言うよりもです。 健康。

  3.   ロベルトゴメス

    アセンブリ言語で記述されたプログラムは常にコンパイルされ、解釈されることはありません。 ただし、スパングリッシュの代わりにスペイン語を使用しても問題はありません。 適切な名前が翻訳されることはありませんが、専門用語は一般的な頭字語ではない場合です。 とにかく、私たちがまだ理解している間、誰もが好きなように話すことができます。