Der Linux-Kernel ändert Teile Ihres Codes von Assembler in C.

Programmiersprache c

Allen ist das bekannt Assembler-Sprache ist die schnellste Aus einigen Gründen und aus diesem Grund wird es am häufigsten im Kernel der verschiedenen Betriebssysteme verwendet. Dasselbe gilt für Echtzeitprojekte, in denen fortschrittliche Elektronik verwendet wird. Das Problem tritt später auf, wenn dieser Code gepflegt werden muss und dies nicht der Fall ist Im Fall des Linux-Kernels haben die Entwickler beschlossen, diesen Assembler-Code in C zu übersetzen.

C ist die repräsentativste Linux-Programmiersprache (von allen * nix-Plattformen) wurde es von entwickelt Dennis Ritchie und Ken Thompson im Jahr 1972, es wurde auf einem Unix PDP-11-System hergestellt und war Teil von Unix Version 2. Aufgrund seiner hohen Leistung und Portabilität wurde es immer häufiger bei der Implementierung von Betriebssystemen und damit eingesetzt Linus Torvalds Er nutzte es für sein Projekt, als er 1990 nach einer freien und offenen Alternative zu Minix suchte.

Natürlich hat Assembler trotz so vieler Stärken einige Vorteile gegenüber C, wie wir zu Beginn erwähnt haben. Diese Entscheidung hat also überrascht, aber nach was Kommentare Andy Lutomirsky Auf den Kernel-Mailinglisten ist Ihre Arbeit in vollem Gange und Linux-Kernel 4.1 wird der erste sein, der diesen Assembler-Quellcode enthält, der in C umgeschrieben wird. Insbesondere alles, was mit dem Beenden des Benutzermodus zusammenhängt, der derzeit aus einer Mischung von Code aus diesen beiden Programmiersprachen besteht, der jedoch aufgrund seines geringen Wartungsaufwands beim Aktualisieren immer komplizierter wird.

Ist das das Code in Assembler Es wurde lange Zeit nicht aktualisiert und das bedeutet, dass neue Entwickler nicht ganz klar über seine Funktionsweise sind und was noch schlimmer ist, es wäre nicht einfach, es zu aktualisieren. Anstatt eine teilweise Änderung zu versuchen, haben sie beschlossen, alle diese Assembler-Routinen auf C zu ändern, und ich persönlich denke, dass zwar eine gewisse Ausführungsgeschwindigkeit verloren gehen kann (was minimal sein kann, wenn der Code C new effizient ist). Neuer und klarer Code ist immer dem veralteten und nahezu null Aktualisierungsmöglichkeiten vorzuziehen weil es nicht gut verstanden ist, wie es implementiert wurde.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: AB Internet Networks 2008 SL
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.

  1.   Miguel MayolTur sagte

    Erstens ist es ENSAMBLADOR auf Spanisch.

    Zweitens muss jede Sprache KOMPILIERT (oder interpretiert) werden, sodass die Güte des Ergebnisses vom KOMPILIERER (oder dem Interpreter) abhängt.

    Da sich der C-Compiler stark verbessert hat und der Assembler nur sehr wenig (weil er bereits sehr gut war), ist heutzutage der Unterschied zwischen einem in C geschriebenen kompilierten Programm und dem in Assembler geschriebenen Programm vernachlässigbar oder nicht vorhanden (davor) war nicht).
    Auch der Unterschied zwischen kompilierten (C und andere) und interpretierten (Java und andere) Programmen wurde stark minimiert.

    Da C viel einfacher zu warten ist als Assembler, ist es eine sehr gute Entscheidung, diese Änderungen im Kernel vorzunehmen, wenn Sie eine Kosten-Nutzen-Analyse, Schwächen, Bedrohungen, Stärken und Chancen durchführen oder andere, die funktionieren.
    zur Entscheidungsfindung.

    1.    Bipolares Capybara sagte

      Zu Miguel Mayol Tur: Zuallererst spricht jeder Programmierer, der sich rühmt, einer zu sein, ASSEMBLER und versteht Englisch. Die anderen verwenden Visual Basic und nennen sich selbst Programmierer. Schade. Und zweitens kompiliert der Assembler NICHT. Die Programme, die damit umgehen, konvertieren Mnemonics direkt in Bytes. Das Programmieren in Assembler spricht mit der Maschine in derselben Sprache, aber um es ein bisschen einfacher zu machen, werden Mnemonics verwendet, anstatt die entsprechenden Bytes direkt zu schreiben. Es gibt eine Eins-zu-Eins-Entsprechung zwischen einem Satz von Bytes und einer Anweisung in Assembler. Aber das weiß natürlich nur ein echter Programmierer, einer von denen, die ASSEMBLER sagen. Folglich gibt es keine Verbesserungen am "Konverter" von Assembler zu Opcodes, da der Programmierer für diese Verbesserung verantwortlich ist. C-Compiler (und andere Sprachen) übersetzen Anweisungen in vordefinierte Makrodarstellungen von Assembler (oder Maschinencode), und die Verbesserungen ergeben sich aus der Art und Weise, wie diese Konvertierungen durchgeführt werden.
      Warum C verwenden? Weil es einfacher ist, etwas zu überprüfen und zu pflegen, das besser lesbar ist. Die meisten Leute verstehen Assembler-Opcodes oder Mnemonics nicht direkt. So einfach ist das.
      Nicht einmal ich werde mich die Mühe machen, über Java zu sprechen, das, obwohl es vor langer Zeit als Standard eingeführt wurde, jetzt von denen verabscheut wird, die Code verstehen.
      Aber glauben Sie mir nicht, fragen Sie Google, ob das, was ich hier gesagt habe, falsch ist.
      Grüße

      1.    eriugihc sagte

        Hallo Chigüire, meine Augen fallen von meinem Gesicht und denken, dass man nicht auf Spanisch schreiben kann, ohne Begriffe angelsächsischen Ursprungs zu verwenden: Es heißt «Assembler».
        Natürlich, in einer Sache stimme ich Ihnen zu, sprechen Sie besser nicht über Java, denn um Unsinn zu sagen, lassen Sie es besser. Ich hatte einen Freund, der wie Sie war, aber ein Zimmermann (kein erfahrener Programmierer), und er sagte, das Beste sei die Handsäge und die anderen Werkzeuge, ganz zu schweigen davon, dass er sogar die Schrauben damit festgezogen habe. Was für ein Beispiel!

  2.   Luis Gérardo Marin sagte

    Die englische Sprache ist immer die Wurzel aller rechnerischen Begriffe. So ist es, auch wenn wir Spanischsprachigen es nicht wollen. Hinzu kommt, dass es Begriffe gibt, die nicht als "Bit", "Byte", "Unix", "Linux", "DOS" und viele andere übersetzt werden können. Und es gibt einige, die übersetzt werden KÖNNTEN, aber es gibt keine "CMOS", "CSS", "RAM", weil es einige Initialen gibt, die nichts mit Technologie zu tun haben und um das Ganze abzurunden, in denen sie nicht einmal existieren Google. Es macht keinen Sinn zu übersetzen, wenn die erzeugte Nachricht nicht lesbar ist. Schlussfolgerung: Bei technischen oder rechnerischen Problemen ist es vorzuziehen, Fachbegriffe in Englisch zu verwenden. Aus dem gleichen Grund: Ich schreibe lieber, dass ich "Windows" verwende, um zu sagen, dass ich das Betriebssystem "Windows" verwende. Und ich spreche lieber über CSS und dass ich type = »text / css verwende, als zu sagen, dass ich« Stylesheet Sheets mit einem Typ verwende, der diagonalen Text Stylesheets entspricht ». Gesundheit.

  3.   Roberto Gómez sagte

    In einer Assemblersprache geschriebene Programme werden immer kompiliert und nie interpretiert. Es ist jedoch nichts Falsches daran, Spanisch anstelle von Spanglish zu verwenden. Richtige Namen werden nie übersetzt, aber Fachbegriffe sind, wenn sie keine populären Akronyme sind. Wie auch immer, jeder kann sprechen, wie es ihm gefällt, solange wir noch verstehen können.