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 |
| Runtime đáng chú ý |
|
| Trình biên dịch & toolchain đáng chú ý |
|
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
- ^ Bill Venners. Bytecode basics. A first look at the bytecodes of the Java virtual machine Lưu trữ ngày 19 tháng 5 năm 2015 tại Wayback Machine. JavaWorld, 01/09/1996. Truy cập 01/04/2017.
- ^ 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.
- ^ 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
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.