Bước tới nội dung

Bytecode

Bách khoa toàn thư mở Wikipedia

Bytecode, còn được gọi là portable code hoặc p-code, là cách thức lưu trữ dạng mã các chỉ thị trong lập trình máy tính, được thiết kế để phần mềm thông dịch thực hiện hiệu quả trên nền tảng máy ảo.

Không giống như các mã nguồn dạng văn bản hiện ra mà người có thể đọc được, bytecode lưu ở dạng mã nhị phân các lệnh, số, hằng, và tham chiếu (thường là địa chỉ bằng số), là mã hoá kết quả của phân tích và dịch những thứ như kiểu, phạm vi và cấp độ lồng (nesting depth) của các đối tượng chương trình. Do đó, nó cho phép thực thi với hiệu năng tốt hơn nhiều so với việc thông dịch trực tiếp mã nguồn văn bản [1].

Tên gọi bytecode bắt nguồn từ tập chỉ lệnh có opcode dài một byte và theo sau là các tham số tùy chọn. Bytecode là dạng trung gian giữa trình mã máy đã biên dịch và văn bản (text). Nó được tạo ra nhờ ngôn ngữ lập trình khi lưu lại, và phục vụ cho thông dịch dễ dàng, hoặc để làm giảm sự phụ thuộc vào phần cứng và hệ điều hành, bằng cách cho phép cùng loại mã có thể chạy trên các nền tảng khác nhau. Bytecode thường có thể được thực thi trực tiếp hoặc trên một máy ảo (một "máy tính p-code" tức trình thông dịch), hoặc nó có thể được tiếp tục biên dịch thành mã máy để cho hiệu năng chạy tốt hơn.

Do các lệnh bytecode được xử lý bởi phần mềm nên chúng có thể phức tạp một cách tùy tiện, tuy nhiên chúng thường giống với các hướng dẫn phần cứng truyền thống: các cơ chế stack ảo (tạm dịch: virtual stack machines) là loại phổ biến nhất, nhưng các cơ chế thanh ghi ảo (tạm dịch: virtual register machines) cũng được xây dựng. Các phần khác nhau của một chương trình thường có thể được lưu trữ trong các tệp riêng biệt, tương tự như các modul mã object (tập tin object), nhưng được nạp linh động trong quá trình thực hiện [2][3].

Thực thi

[sửa | sửa mã nguồn]

Tham khảo

[sửa | sửa mã nguồn]
  1. ^ Bill Venners. Bytecode basics. A first look at the bytecodes of the Java virtual machine Lưu trữ 2015-05-19 tại Wayback Machine. JavaWorld, 01/09/1996. Truy cập 01/04/2017.
  2. ^ Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes. The Implementation of Lua 5.0 Journal of Universal Computer Science, Volume 11, Issue 7. Truy cập 01/04/2017. This involves a register-based virtual machine.
  3. ^ Dalvik V. M. Dalvik bytecode. android.com, 27/03/2017. Truy cập 01/04/2017. This is register based.


Liên kết ngoài

[sửa | sửa mã nguồn]