Chuyển tới nội dung chính

Thực thi và xử lý

  1. Compile-Time (Thời gian biên dịch)
    • Giai đoạn khi mã nguồn được biên dịch thành mã máy (hoặc mã trung gian) bởi trình biên dịch. Đây là lúc phát hiện lỗi cú pháp, lỗi kiểu dữ liệu và thực hiện tối ưu hóa mã.
    • Ví dụ: Lỗi thiếu dấu chấm phẩy ; hoặc lỗi không tương thích kiểu dữ liệu sẽ được phát hiện ở giai đoạn này.
  2. Run-Time (Thời gian chạy)
    • Giai đoạn chương trình đang thực thi trên máy tính. Lúc này, lỗi liên quan đến dữ liệu nhập, logic hoặc điều kiện đặc biệt trong thực thi có thể xuất hiện.
    • Ví dụ: Lỗi chia cho 0 hoặc lỗi truy cập con trỏ null xảy ra trong thời gian chạy.
  3. Link-Time (Thời gian liên kết)
    • Giai đoạn liên kết các tệp đối tượng (object files) hoặc thư viện (libraries) thành tệp thực thi cuối cùng.
    • Ví dụ: Lỗi không tìm thấy định nghĩa hàm trong thư viện (undefined reference) xảy ra ở thời gian liên kết.
  4. Load-Time (Thời gian nạp)
    • Giai đoạn khi hệ điều hành nạp tệp thực thi vào bộ nhớ và chuẩn bị chương trình để chạy.
    • Ví dụ: Hệ điều hành cấp phát bộ nhớ và ánh xạ các thư viện động (dynamic libraries) tại thời gian này.
  5. Static Initialization Time (Thời gian khởi tạo tĩnh)
    • Giai đoạn khi các biến toàn cục hoặc tĩnh được khởi tạo trước khi chương trình thực thi.
    • Ví dụ:
      static int x = 10; // Được khởi tạo tại static initialization time.
  6. Dynamic Initialization Time (Thời gian khởi tạo động)
    • Giai đoạn khởi tạo đối tượng hoặc biến thông qua logic động, thường liên quan đến constructor.
    • Ví dụ:
      class MyClass {
      int x;
      public:
      MyClass() { x = 10; }
      };
      MyClass obj; // Khởi tạo tại dynamic initialization time.
  7. Preprocessing Time (Thời gian tiền xử lý)
    • Giai đoạn khi các chỉ thị tiền xử lý (#define, #include, #if) được xử lý bởi trình tiền xử lý (preprocessor).
    • Ví dụ: Dòng mã #include <iostream> sẽ được thay thế bằng nội dung của tệp tiêu đề trước khi biên dịch.
  8. Execution Time (Thời gian thực thi)
    • Khoảng thời gian chương trình chạy từ lúc bắt đầu đến khi kết thúc, bao gồm cả các thao tác nhập/xuất, xử lý logic và giải phóng tài nguyên.
    • Ví dụ: Một chương trình tính tổng của mảng sẽ có execution time phụ thuộc vào kích thước mảng.
  9. Compile-Time Polymorphism (Đa hình thời gian biên dịch)
    • Loại đa hình được quyết định trong thời gian biên dịch, thường liên quan đến hàm nạp chồng (function overloading) hoặc toán tử nạp chồng (operator overloading).
    • Ví dụ:
      void func(int x);
      void func(double y); // Quyết định tại compile-time.
  10. Run-Time Polymorphism (Đa hình thời gian chạy)
    • Loại đa hình được quyết định tại thời gian chạy, thường liên quan đến phương pháp ảo (virtual functions) trong lập trình hướng đối tượng.
    • Ví dụ:
      class Base {
      virtual void display() { cout << "Base"; }
      };
  11. Static Linking (Liên kết tĩnh)
    • Quá trình liên kết thư viện trực tiếp vào tệp thực thi trong thời gian biên dịch.
    • Ví dụ: Một tệp thực thi lớn hơn bình thường do toàn bộ mã thư viện được liên kết.
  12. Dynamic Linking (Liên kết động)
    • Thư viện được liên kết tại thời gian chạy thay vì biên dịch. Điều này giúp giảm kích thước tệp thực thi.
    • Ví dụ: Một chương trình sử dụng thư viện DLL trên Windows.
  13. Early Binding (Ràng buộc sớm)
    • Việc liên kết các lệnh gọi hàm hoặc đối tượng với định nghĩa được thực hiện trong thời gian biên dịch.
    • Ví dụ: Hàm không ảo (non-virtual function) được gọi bằng con trỏ hoặc tham chiếu.
  14. Late Binding (Ràng buộc muộn)
    • Việc liên kết các lệnh gọi hàm với định nghĩa được thực hiện trong thời gian chạy, thường thông qua cơ chế hàm ảo (virtual function).
    • Ví dụ:
      class Base {
      virtual void func() { cout << "Base"; }
      };
  15. Just-In-Time Compilation (JIT) (Biên dịch khi thực thi)
    • Kỹ thuật biên dịch mã nguồn hoặc mã bytecode thành mã máy ngay trong thời gian chạy.
    • Ví dụ: Thường không dùng trong C++ mà phổ biến trong Java hoặc C#.
  16. Real-Time Execution (Thực thi thời gian thực)
    • Chương trình phải hoàn thành một tác vụ trong thời hạn nhất định, thường áp dụng trong hệ thống nhúng hoặc ứng dụng thời gian thực.
    • Ví dụ: Hệ thống điều khiển phanh ABS trong xe hơi.