1
Bytecode là gì?
0
Tưởng0 đã đăng:

thêm bình luận...
1
trungkfc02570 đã đăng:

Bytecode (còn gọi là portable code hay intermediate code), nó là kết quả của mã nguồn sau khi được biên dịch bởi Compiler.

Ví dụ:

Ta có file mã nguồn hello.cpp:

#include <iostream>
using namespace std;

int main() {
    cout << "Hello World" << endl;
}

Sau khi biên dịch, ta sẽ có file bytecode hello.obj, mở bằng Visual Studio, nó sẽ giống như thế này:

0000000   4C 01 72 01 FC 72 BF 5B   57 71 00 00 93 04 00 00
0000010   00 00 00 00 2E  64 72 65   63 74 76 65 00 00 00 00
0000020   00 00 00 00 B1  01 00 00   E4 39 00 00 00 00 00 00
............   ....................................   ...................................

Mục đích của bytecode là gì?

Không giống như mã nguồn là thứ mà chúng ta có thể đọc dễ dàng, bytecode được tạo ra bởi Compiler với mục đích:

  • Dễ dàng đọc và được thực thi hiệu quả bởi các chương trình phần mềm thực thi.
  • Bytecode ở vị trí trung gian giữa mã nguồn (code) và mã máy (machine code), cho nên nó giảm thiểu khả năng phụ thuộc phần cứng và hệ điều hành, tức là cùng một mã bytecode có thể thực thi được trên nhiều hệ điều hành khác nhau.
  • Bytecode còn được dùng để thực thi trực tiếp trên các máy ảo như JVM (Java - Java Virtual Machine), CLR (C# - Common Language Runtime) hay PVM (Python - Python Virtual Machine).

Đuôi mở rộng của file bytecode trong các ngôn ngữ lập trình phổ biến?

  • Python: hello.py $\rightarrow$ hello.pyc
  • C++: hello.cpp $\rightarrow$ hello.obj
  • Java: hello.java $\rightarrow$ hello.class

Ví dụ quá trình chuyển từ mã nguồn (code) $\rightarrow$ bytecode $\rightarrow$ được thực thi bởi JVM $\rightarrow$ mã máy (machine code) trong Java:

Quá trình thực thi mã nguồn trong Java

đã bổ sung 5.5 năm trước bởi
Avatar: trungkfc02 trungkfc02570
thêm bình luận...
Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)