Lancez-Vous. C'est gratuit
ou s'inscrire avec votre adresse e-mail
Overall par Mind Map: Overall

1. **Programming language**

1.1. Truyền thống

1.1.1. **Tính tương thích:** Mỗi CPU mới sẽ viết 1 CT dịch mới

1.1.2. **Đặc điểm:** tạo ra 1 file executable -> phụ thuộc CPU và OS (không thể lấy file .exe sang máy khác sử dụng)

1.2. **Hiện đại ** (Java, C#)

1.2.1. **Đặc điểm:** tạo ra file **abstract executable** (độc lập CPU và OS); nhưng file này chưa chạy được, MT cần có máy ảo thì mới chạy được (Vd: Java -> JVM (Java Virtual Machine)

2. CT dịch

2.1. Compiler

2.1.1. Kiểm cú phép, chặt chẽ **cả file source code**

2.1.2. Tạo ra file .exe (sau này có chạy thì không phụ thuộc source code)

2.2. Interpreter

2.2.1. Kiểm cú pháp **line by line** -> OK thì nạp vào RAM chạy

2.2.2. Không tạo ra file .exe

3. Memory layout

3.1. Text Segment

3.1.1. Code: contains executable instructions

3.2. Initialized data segment

3.2.1. Initialized global/ static variable

3.3. **Uninitialized data segment** (bss - block started by symbol)

3.3.1. Uninitialized global/ static variable

3.4. Heap

3.4.1. Dynamic memory

3.5. Stack

4. **Assembly language**

4.1. Overall

4.1.1. Low-level language

4.1.2. Cần **Assembler** dịch -> Mỗi assembler chỉ dùng cho 1 CPU

4.2. Feature

4.2.1. Tính tương thích không cao (lệ thuộc CPU)

5. **Machine Code** (Binary code/ 1s & 0s code)

5.1. Step

5.1.1. **B1: End User: ** ra lệnh chạy CT

5.1.2. **B2: OS: ** nhận y/c -> tìm, nạp file excecutable vào RAM; bộ đếm lệnh CPU trỏ đến lệnh đầu tiên

5.1.3. **B3: CPU: ** thực hiện tuần tự từng chỉ thị: copy -> tăng bộ đếm -> thực thi

5.2. Feature

5.2.1. **Machine code: ** các chỉ thị viết theo lệnh CPU -> lệ thuộc CPU (họ máy)

5.2.2. **OS:** phải cấu trúc hóa theo OS để OS tìm nạp được -> lệ thuộc OS

5.2.3. **Tóm lại: ** Khó viết, tính tương thích không cao (lệ thuộc OS và CPU)