Bytecode

Thực thi chương trình
Khái niệm chung
Các loại mã
Chiến lược biên dịch
  • Just-in-time (JIT)
    • Tracing just-in-time
  • Ahead-of-time (AOT)
  • Transcompilation
  • Recompilation
Runtime đáng chú ý
  • Android Runtime (ART)
  • Common Language Runtime (CLR) & Mono
  • crt0
  • HHVM
  • Java virtual machine (JVM)
  • Objective-C
  • V8
    • Node.js
  • PyPy
  • Zend Engine
Trình biên dịch & toolchain đáng chú ý
  • GNU Compiler Collection (GCC)
  • LLVM
    • Clang
  • x
  • t
  • s

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

Tham khảo

  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.


Xem thêm

Liên kết ngoài

Bài viết này vẫn còn sơ khai. Bạn có thể giúp Wikipedia mở rộng nội dung để bài được hoàn chỉnh hơn.
  • x
  • t
  • s
  • x
  • t
  • s
Mô tả kiến trúc · Mô tả phần cứng · Đánh dấu · Lập mô hình · Ngôn ngữ lập trình · Query · Specification · Stylesheet · Template processing · Transformation
  • x
  • t
  • s
Paradigm
Cấp độ
Có liên quan
  • Ngôn ngữ lập trình không dựa trên tiếng Anh
  • Off-side rule
  • Ngôn ngữ lập trình trực quan
  • x
  • t
  • s
Những lĩnh vực chính của khoa học máy tính
Các nền tảng toán học
Lý thuyết phép tính
Độ phức tạp Kolmogorov · Lý thuyết Automat · Lý thuyết tính được · Lý thuyết độ phức tạp tính toán · Lý thuyết điện toán lượng tử
Các cấu trúc dữ liệu
các giải thuật
Phân tích giải thuật · Thiết kế giải thuật · Hình học tính toán · Tối ưu hóa tổ hợp
Các ngôn ngữ lập trình
Các trình biên dịch
Tính song hành,
Song song,
và các hệ thống phân tán
Công nghệ phần mềm
Phân tích yêu cầu · Thiết kế phần mềm · Các phương pháp hình thức · Kiểm thử phần mềm · Quy trình phát triển phần mềm · Các phép đo phần mềm · Đặc tả chương trình · LISP · Mẫu thiết kế · Tối ưu hóa phần mềm
Kiến trúc hệ thống
Kiến trúc máy tính · Tổ chức máy tính · Các hệ điều hành · Các cấu trúc điều khiển · Cấu trúc bộ nhớ lưu trữ · Vi mạch · Thiết kế ASIC · Vi lập trình · Vào/ra dữ liệu · VLSI design · Xử lý tín hiệu số
Viễn thông
Mạng máy tính
Các cơ sở dữ liệu
Các hệ thống thông tin
Hệ quản trị cơ sở dữ liệu · Cơ sở dữ liệu quan hệ · SQL · Các giao dịch · Các chỉ số cơ sở dữ liệu · Khai phá dữ liệu · Biểu diễn và giao diện thông tin · Các hệ thống thông tin · Khôi phục dữ liệu · Lưu trữ thông tin · Lý thuyết thông tin · Mã hóa dữ liệu · Nén dữ liệu · Thu thập thông tin
Trí tuệ nhân tạo
Lập luận tự động · Ngôn ngữ học tính toán · Thị giác máy tính · Tính toán tiến hóa · Các hệ chuyên gia  · Học máy · Xử lý ngôn ngữ tự nhiên · Robot học
Đồ họa máy tính
Trực quan hóa · Hoạt họa máy tính · Xử lý ảnh
Giao diện người-máy tính
Khả năng truy cập máy tính · Giao diện người dùng · Điện toán mang được · Điện toán khắp mọi nơi · Thực tế ảo
Khoa học tính toán
Cuộc sống nhân tạo · Tin sinh học · Khoa học nhận thức · Hóa học tính toán · Khoa học thần kinh tính toán · Vật Lý học tính toán · Các giải thuật số · Toán học kí hiệu
Chú ý: khoa học máy tính còn có thể được chia thành nhiều chủ đề hay nhiều lĩnh vực khác dựa theo Hệ thống xếp loại điện toán ACM.