1. Trang chủ
  2. » Công Nghệ Thông Tin

04 to chuc hoat dong vi xu ly

30 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 30
Dung lượng 2,75 MB

Nội dung

Mơn học: Kiến trúc máy tính & Hợp ngữ • Là loại ngơn ngữ nhân tạo (Ví dụ: C/C++) cấu thành yếu tố chính: – Từ vựng: 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 (gọi lập trình viên) diễn đạt mơ tả hướng dẫn cho máy tính hoạt động theo ý muốn • Độ phức tạp (trừu tượng) hướng dẫn định thứ bậc ngôn ngữ – Độ phức tạp cao bậc thấp – Ví dụ: C Sharp (C#) ngơn ngữ bậc cao C • Ngơn ngữ mà người dễ hiểu lại ngơn ngữ máy tính “khó hiểu” – Ngơn ngữ bậc cao người dễ hiểu máy tính lại “khó hiểu” • Nhưng máy tính lại nơi cần hiểu nhanh để thực thi muốn  Ngơn ngữ máy (Machine language) If (n>0) { n=-1; } OK ??? If (n>0) { n=-1; } • Ngơn ngữ máy cho phép người lập trình đưa hướng dẫn đơn giản mà vi xử lý (CPU) thực • Các hướng dẫn gọi thị / lệnh (instruction) mã máy (machine code) • Mỗi vi xử lý (CPU) có ngôn ngữ riêng, gọi lệnh (instruction set) • Trong dòng vi xử lý (processor family) lệnh gần giống Instruction set • Là dãy bit chứa yêu cầu mà xử lý CPU (ALU) phải thực • Instruction gồm thành phần: – Mã lệnh (opcode): thao tác cần thực – Thơng tin tốn hạng (operand): đối tượng bị tác động thao tác chứa mã lệnh • Tập lệnh dành cho vi xử lý có kiến trúc tương tự • Một số ISA thơng dụng: – Dịng vi xử lý 80x86 (gọi tắt x86) Intel • IA-16: Dịng xử lý 16 bit (Intel 8086, 80186, 80286) • IA-32: Dịng xử lý 32 bit (Intel 80368 – i386, 80486 – i486, Pentium II, Pentium III …) • IA-64: Dịng xử lý 64 bit (Intel x86-64 Pentium D…) – MIPS: Dùng nhiều hệ thống nhúng (embedded system) – PowerPC IBM • Có trường phái thiết kế lệnh: – Complete Instruction Set Computer (CISC): lệnh gồm nhiều lệnh, từ đơn giản đến phức tạp – Reduced Instruction Set Computer (RISC): lệnh gồm lệnh đơn giản • Nên chọn kiểu nào? • Khơng phải muốn / lập trình ngơn ngữ máy q khó hiểu so với ngơn ngữ bình thường người  Nhu cầu cần có phận phiên dịch (interpreter) High-level language (C/C++) OK Interpreter Machine Laguage OK • Trong số trường hợp, việc viết ngôn ngữ cấp “quá cao” trở nên chạy chậm 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 language Lower-level language Lower-level language Interpreter Machine Laguage • Các mã máy số (0 / 1) • Trong ngơn ngữ máy khơng có khái niệm biến  thay vào địa ô nhớ, ghi (lưu trữ mã lệnh, liệu) • Để dễ dàng lập trình  dùng ký hiệu mã giả thay cho số biểu diễn địa ô nhớ, tên (label, tên biến, tên chương trình) • Hợp ngữ gần với ngơn ngữ máy lại đủ để người hiểu sử dụng tốt ngơn ngữ máy – Ví dụ: Ghi giá trị vào ghi $4 Ngôn ngữ máy: 00110100 0000100 00000000 00000101 Hợp ngữ : ori $4, $0, 10 • Trình biên dịch hợp ngữ  ngơn ngữ máy • Một vi xử lý (đi kèm lệnh xác định) có nhiều Assembler nhiều nhà cung cấp khác chạy OS khác – Ví dụ: Cùng kiến trúc x86, dùng A86, GAS, TASM, MASM, NASM • Assembly program phụ thuộc vào Assembler mà sử dụng (do mở rộng, đặc điểm khác Assembler) 16 17 • Bản thân Compiler chương trình, biên dịch gì?  Assembler • Sau biên dịch tập tin mã nguồn ngôn ngữ cấp cao thành tập tin mã máy (machine language), để chạy tập tin máy tính?  Linker & Loader 18 • Thực tế lập trình, ta dùng nhiều file (header / source) liên kết kèm theo thư viện có sẵn  Cần chương trình Linker để liên kết file sau biên dịch thành mã máy (Object file)  Tập tin thực thi (ví dụ: exe, bat, sh) 19 • Khi double click vào tập tin thực thi, cần chương trình tính tốn tải vào memory để CPU xử lý  Loader 20 21 22 • Compiler Assembler bỏ qua số trường hợp cụ thể… • Trong thực tế, có số compiler tạo file thực thi nhiều tảng kiến trúc bên khác nhau, gọi cross-platform compiler – Compiler cho Java – Cygwin – Code::Block Studio 23 24 • CPU xử lý lệnh qua bước, gọi chu kỳ lệnh: – Nạp lệnh (Fetch): Di chuyển lệnh từ memory vào ghi (register) CPU – Thực thi lệnh (Excute): Giải mã lệnh thực thi thao tác yêu cầu Start Fetch next Instruction Execute Instruction Halt 25 • • • • MAR  PC MBR  Memory IR  MBR PC  PC + • Thanh ghi PC (Program Counter) – Lưu địa (address) lệnh nạp • Thanh ghi MAR (Memory Address Register) – Lưu địa (address) output Address bus • • • Control Unit di chuyển mã lệnh, có địa PC, vào ghi IR Thanh ghi MBR (Memory Buffer Register) • Mặc định, giá trị ghi PC tăng – Lưu giá trị (value) input / output từ Data bus lượng = chiều dài lệnh vừa nạp Thanh ghi IR (Instruction Register) – Lưu mã lệnh xử lý tiếp 26 Chương trình x=x+y … CPU PC 00010011 R1 00010000 01000000 00000001 IR ALU CPU RAM … 00010000 01000000 00000001 00001100 01000010 00000001 00010000 00000001 01000000 … x y … Địa Lệnh (Instruction) 00010000 00010011 00010110 … 01000000 01000010 x  R1 R1+y  R1 R1  x … … 27 • Tính địa lệnh • Nạp lệnh • Giải mã lệnh • Tính địa tốn hạng • Nạp tốn hạng • Thực lệnh • Tính địa tốn hạng chứa kết • Các bước lặp lặp lại cho tất lệnh • Quy trình gọi Instruction cycle – vòng lặp xử lý lệnh • Ghi kết 28 • Ngơn ngữ lập trình giống khác ngôn ngữ tự nhiên người điểm nào? • Tại cần nhiều loại ngơn ngữ lập trình: C, C++, C#, VB, Java…? • Một chương trình khơng khai báo biến có sử dụng nhớ khơng? • Chương trình thực thi RAM hay CPU? • Tại file exe chạy Windows mà chạy Linux? 29 • Sách Petterson & Hennessy: Đọc chương (đọc kỹ 2.12 2.13) • Tài liệu tham khảo: Đọc “08_HP_AppA.pdf” 30

Ngày đăng: 08/04/2023, 06:21

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w