Nhân Linux thay đổi các phần mã của bạn từ Assembler sang C

ngôn ngữ lập trình c

Được biết đến bởi tất cả là Ngôn ngữ Assembler là nhanh nhất đối với một số vấn đề và vì lý do này, nó được sử dụng nhiều nhất trong nhân của các hệ điều hành khác nhau và điều tương tự cũng xảy ra đối với các dự án thời gian thực sử dụng các thiết bị điện tử tiên tiến. Vấn đề xảy ra sau đó, khi mã đó cần được duy trì và nó không, và do đó Trong trường hợp của nhân Linux, các nhà phát triển đã chọn dịch mã Assembler đó sang C.

C là ngôn ngữ lập trình Linux tiêu biểu nhất (trên thực tế, trong tất cả các nền tảng * nix), nó được phát triển bởi Dennis Ritchie và Ken Thompson vào năm 1972, nó được tạo ra trên hệ thống Unix PDP-11 và là một phần của Unix phiên bản 2. Với hiệu suất cao và tính di động, nó bắt đầu được sử dụng ngày càng nhiều trong việc triển khai các hệ điều hành và do đó Linus Torvalds Ông đã sử dụng nó cho dự án của mình khi trở lại năm 1990, ông đang tìm kiếm một giải pháp thay thế miễn phí và cởi mở cho Minix.

Tất nhiên, mặc dù rất nhiều điểm mạnh, Assembler có một số lợi thế hơn C như chúng ta đã đề cập ở phần đầu, vì vậy quyết định này đã gây bất ngờ nhưng theo những gì bình luận Andy Lutomirsky trên danh sách gửi thư nhân hạt nhân, công việc của bạn đang được tiến hành tốt và Hạt nhân Linux 4.1 sẽ là người đầu tiên kết hợp việc viết lại mã nguồn này từ Assembler sang C. Cụ thể, mọi thứ liên quan đến các lần thoát sang chế độ người dùng, hiện bao gồm hỗn hợp mã từ hai ngôn ngữ lập trình này nhưng do khả năng bảo trì thấp, ngày càng phức tạp khi cập nhật.

Nó có phải là mã trong Assembler Nó đã không được cập nhật trong một thời gian dài và điều đó có nghĩa là các nhà phát triển mới không hoàn toàn rõ ràng về hoạt động của nó, và điều tồi tệ hơn, sẽ không dễ dàng để cập nhật nó. Do đó, thay vì thử một số thay đổi một phần, họ đã chọn bắt đầu thay đổi tất cả các quy trình Assembler đó thành C và cá nhân tôi nghĩ rằng mặc dù một số tốc độ thực thi có thể bị mất (có thể là tối thiểu nếu mã C mới hiệu quả) mã mới và rõ ràng luôn được ưu tiên hơn là đã lỗi thời và hầu như không có khả năng cập nhật bởi vì nó không được hiểu rõ về cách nó được thực hiện.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: AB Internet Networks 2008 SL
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   Miguel Mayol Tur dijo

    Ở vị trí đầu tiên, nó là ENSAMBLADOR, bằng tiếng Tây Ban Nha.

    Thứ hai, tất cả ngôn ngữ phải được COMPILED (hoặc thông dịch), vì vậy mức độ tốt của kết quả phụ thuộc vào COMPILER (hoặc trình thông dịch)

    Vì trình biên dịch C đã được cải thiện rất nhiều và trình hợp dịch còn rất ít (vì nó đã rất tốt), ngày nay sự khác biệt của một chương trình được biên dịch được viết bằng C so với cùng một chương trình được viết bằng trình hợp dịch là không đáng kể hoặc không tồn tại (trước nó không).
    Ngay cả sự khác biệt giữa các chương trình được biên dịch (C và các chương trình khác) và được thông dịch (Java và các chương trình khác) cũng đã được giảm thiểu đáng kể.

    Vì vậy, việc duy trì C dễ dàng hơn nhiều so với trình hợp dịch, đó là một quyết định rất đúng đắn để thực hiện những thay đổi này trong hạt nhân, khi thực hiện phân tích lợi ích chi phí, điểm yếu, mối đe dọa, điểm mạnh và cơ hội hoặc bất kỳ hoạt động nào khác.
    để ra quyết định.

    1.    Lưỡng cực Capybara dijo

      Gửi Miguel Mayol Tur: Trước hết, mọi lập trình viên tự xưng là một người đều nói ASSEMBLER và hiểu tiếng Anh. Những người khác sử dụng Visual Basic và tự gọi mình là lập trình viên. Xấu hổ làm sao. Và thứ hai là Trình lắp ráp KHÔNG SO SÁNH. Những gì các chương trình xử lý nó làm là chuyển đổi các thuật ngữ ghi nhớ thành byte trực tiếp. Lập trình trong Assembler là nói với máy bằng cùng một ngôn ngữ, nhưng để dễ dàng hơn một chút, các thuật ngữ được sử dụng thay vì viết trực tiếp các byte tương ứng. Có sự tương ứng XNUMX-XNUMX giữa một tập hợp các byte và một lệnh trong Assembler. Nhưng điều này, tất nhiên, chỉ một lập trình viên thực sự biết, một trong những người nói ASSEMBLER. Do đó, không có cải tiến nào đối với "bộ chuyển đổi" từ trình hợp dịch sang mã quang vì lập trình viên chịu trách nhiệm thực hiện cải tiến đó. Trình biên dịch C (và các ngôn ngữ khác) dịch các hướng dẫn thành các biểu diễn macro được thiết lập trước của trình hợp dịch (hoặc mã máy) và những cải tiến được đưa ra bởi các chuyển đổi đó như thế nào.
      Tại sao sử dụng C? Bởi vì nó dễ dàng hơn để xem xét và duy trì một cái gì đó dễ đọc hơn. Hầu hết mọi người không hiểu trực tiếp các mã quang học hoặc kỹ thuật ghi nhớ của trình lắp ráp. Đơn giản vậy thôi.
      Tôi thậm chí sẽ không bận tâm đến việc nói về Java, mặc dù nó đã được áp dụng như một tiêu chuẩn từ rất lâu trước đây nhưng giờ đây lại bị những người hiểu code ghét bỏ.
      Nhưng đừng tin tôi, hãy hỏi Google xem những gì tôi nói ở đây là sai sự thật.
      Liên quan

      1.    eriugihc dijo

        Xin chào Chigüire, mắt tôi như rơi xuống vì nghĩ rằng bạn không thể viết bằng tiếng Tây Ban Nha mà không sử dụng các thuật ngữ gốc Anglo-Saxon: người ta nói "người lắp ráp".
        Tất nhiên, tôi đồng ý với bạn một điều, tốt hơn hết là không nên nói về java vì để nói những điều vô nghĩa thì tốt hơn là bỏ nó đi. Tôi có một người bạn giống bạn nhưng là một thợ mộc (không phải là một lập trình viên chuyên nghiệp) và anh ấy nói rằng thứ tốt nhất là cái cưa tay và các công cụ khác, chưa kể anh ấy thậm chí còn siết chặt các con ốc với nó. Thật là một tấm gương để noi theo!

  2.   Luis Gerardo Marín dijo

    Ngôn ngữ tiếng Anh luôn là gốc rễ của tất cả các thuật ngữ tính toán. Đó là cách của nó, ngay cả khi chúng tôi nói tiếng Tây Ban Nha không muốn nó. Thêm vào đó là có những thuật ngữ không thể dịch là "bit", "byte", "unix", "linux", "DOS" và nhiều thuật ngữ khác. Và có một số cái CÓ THỂ được dịch nhưng không có cái gọi là "CMOS", "CSS", "RAM" bởi vì có một số tên viết tắt không liên quan gì đến công nghệ và trên hết chúng thậm chí không tồn tại trong Google. Không có ích lợi gì trong việc dịch khi thông báo được tạo ra không thể đọc được. Kết luận: Đối với các vấn đề liên quan đến kỹ thuật hoặc tính toán, bạn nên sử dụng các thuật ngữ kỹ thuật bằng tiếng Anh. Vì lý do tương tự: Tôi thích viết rằng tôi sử dụng "cửa sổ" để nói rằng tôi sử dụng hệ điều hành "cửa sổ". Và tôi thích nói về CSS và tôi sử dụng type = »text / css hơn là cố gắng nói rằng tôi sử dụng« các bảng định kiểu có kiểu bằng với các biểu định kiểu văn bản đường chéo ». Sức khỏe.

  3.   Roberto Gomez dijo

    Các chương trình được viết bằng hợp ngữ luôn được biên dịch, không bao giờ được thông dịch. Tuy nhiên, không có gì sai khi sử dụng tiếng Tây Ban Nha thay vì tiếng Spanglish. Tên riêng không bao giờ được dịch, nhưng các thuật ngữ kỹ thuật là khi chúng không phải là từ viết tắt phổ biến. Dù sao đi nữa, mọi người đều có thể nói tùy ý trong khi chúng ta vẫn có thể hiểu được.