Bài giảng "Kiến trúc máy tính - Giới thiệu hợp ngữ" cung cấp cho người học các kiến thức: Ngôn ngữ lập trình, ngôn ngữ máy, hợp ngữ, compiler, mô hình phân tầng các ngôn ngữ trên máy tính, quá trình thực thi file trên máy tính,. . | Bài giảng môn học Kiến trúc máy tính - Giới thiệu hợp ngữ Môn học: Kiến trúc máy tính • Là loại ngôn ngữ nhân tạo (Ví dụ: C/C++) được cấu thành bởi 2 yếu tố chính: – Từ vựng: là các keyword (struct, enum, if, int ) – Ngữ pháp: syntax (if( ){} else{}, do{} while() ) • Ngôn ngữ lập trình giúp cho người sử dụng nó (gọi là lập trình viên) có thể diễn đạt và mô tả các hướng dẫn cho máy tính hoạt động theo ý muốn của mình • Độ phức tạp (trừu tượng) của các hướng dẫn này quyết định thứ bậc của ngôn ngữ – Độ phức tạp càng cao thì bậc càng thấp – Ví dụ: C Sharp (C#) là ngôn ngữ bậc cao hơn C 2 • Ngôn ngữ nào mà con người dễ hiểu nhất lại là ngôn ngữ máy tính “khó hiểu” nhất – Ngôn ngữ bậc càng cao thì con người càng dễ hiểu nhưng máy tính lại càng “khó hiểu” • Nhưng máy tính lại là nơi chúng ta cần nó hiểu đúng và nhanh nhất để có thể thực thi những gì chúng ta muốn Ngôn ngữ máy (Machine language) If (n>0) OK ??? If (n>0) { { n=-1; n=-1; } } 3 • Ngôn ngữ máy cho phép người lập trình đưa ra các hướng dẫn đơn giản mà bộ vi xử lý (CPU) có thể thực hiện được ngay • Các hướng dẫn này được gọi là chỉ thị / lệnh (instruction) hoặc mã máy (machine code) • Mỗi bộ vi xử lý (CPU) có 1 ngôn ngữ riêng, gọi là bộ lệnh (instruction set) • Trong cùng 1 dòng vi xử lý (processor family) bộ lệnh gần giống nhau Instruction set 4 • Không phải ai cũng muốn / có thể lập trình ngôn ngữ máy vì quá khó hiểu so với ngôn ngữ bình thường của con người Nhu cầu cần có bộ phận phiên dịch (interpreter) High-level Machine language Interpreter Laguage (C/C++) OK OK 5 • Trong 1 số trường hợp, việc viết bằng ngôn ngữ cấp “quá cao” trở nên chạy khá chậm vì phải phiên dịch nhiều lần để trở thành ngôn ngữ máy Hợp ngữ (Assembly language) Highest-level Lower-level Lower-level Interpreter Machine language language language Laguage 6 • Các mã máy chỉ là các con số (0 / 1) • Trong ngôn ngữ máy không có khái niệm .