Bearking's Stronghold will hack for food

Compiler101 - 0x00

2022-09-19
th3_5had0w

Tự tìm hiểu về compilers 🐛

Compiler101 - 0x00

Khái quát về compiler

Compiler là cái bầu đuồi gì?

Khi ta lập trình sẽ dùng các ngôn ngữ như C, C++, Javascript, Java, Python, Ruby,… Thì compiler sẽ đóng vai trò như phiên dịch viên, xử lý source code thành machine code cho ra executable tương ứng.

Phân loại compiler

Compiler được phân loại dựa trên 2 yếu tố:

  1. Loại machine code được compiler generate ra

  2. Format của target code (machine code, object code hoặc assembly language) mà compiler generate ra

Các loại machine code được generate bởi compiler

Bao gồm:

  • Pure machine code

Như tên gọi, loại machine code này được compiler generate ra chỉ bao gồm các instruction của một instruction set nào đó (Intelx86, ARM, MIPS,…) và không bị phụ thuộc vào các syscall của 1 điều hành cụ thể hay các function, variable, macro implementation của thư viện nào.

  • Augmented machine code

Đây là loại machine code mà ta thường thấy. Compiler generate ra các machine code dựa trên các syscall của hệ điều hành, hay các library từ các runtime environment của các language, nên các executable được tạo ra vẫn tồn tại các giới hạn về phạm vi hoạt động như khác architecture, có nghĩa là một executable được compile trên architect này sẽ không chạy được trên một architect khác, . Điển hình có thể thấy như C, C++, Fortran.

  • Virtual machine code

Virtual machine code được generate ra từ các virtual instruction, các virtual instruction này cần được “dịch” thông qua môi trường VM để có thể chạy được trên thiết bị host. Vì vậy một tập các virtual instruction hay bytecode của một ngôn ngữ cụ thể có thể được thực thi trên bất cứ loại thiết bị nào có môi trường VM của ngôn ngữ đó. Điển hình là ngôn ngữ Java với Java Virtual Machine hay Python với Python interpreter.


Similar Posts

Comments