) Giải đáp add a, b, c sub d , a , e
) Thí d ụ Tìm hi ể u mã máy c ủ a đ o ạ n h ợ p ng ữ sau
3.9 Thực thi 1 chương trình
) Các bước chính trong qua trình thực thi 1 chương
trình mã nguồn C
C program
Assembly language program
Object module Library module
Executable program
Compiler
Assembler
Linker
Kiến trúc Máy tính - Chap 03 43
…
) Chương trình dịch (Compiler)
• Dịch chương trình mã nguồn C sang chương trình dạng hợp ngữ
• Trước đây, đa phần các hệ điều hành và assembler được viết bằng hợp ngữ do hạn chế về dung lượng bộ nhớ của máy tính và do các chương trình dịch làm việc kém hiệu quả
• Ngày nay, dung lượng bộ nhớ đã được phát triển đáng kể, các chương trình dịch cũng hoạt động tối ưu hơn nên đã cĩ thể dịch ra những chương trình dạng hợp ngữ tốt khơng kém các chuyên gia hợp ngữ, nhất là đối với các chương trình lớn
) Assembler
• Cĩ thể bổ sung vào tập lệnh các câu lệnh giả (pseudo-
instruction) khơng cĩ trong kiến trúc tập lệnh nhưng cĩ thể giúp cho việc lập trình trở nên hiệu quả hơn
move $t0 , $t1 thay cho add $t0 , $zero , $t1
…
) Assembler (cont’d)
• Các tốn hạng tức thời cĩ thể viết dưới dạng thập phân, dạng thập lục phân (0x …) hay dạng nhị phân (0b …)
• Assembler dịch chương trình dạng hợp ngữ sang object file, là tổ
hợp gồm các câu lệnh dạng mã máy, dữ liệu và những thơng tin cần thiết để cĩ thể sắp xếp các câu lệnh và dữ liệu một cách đúng
đắn trong bộ nhớ
• Một object file trên hệ điều hành Unix gồm 6 thành phần
* object file header Ư kích thước và vị trí của các thành phần cịn lại
* text segment Ư chương trình dạng mã máy
* data segment Ư chứa các loại dữ liệu (tĩnh/động) đi theo chương trình
* relocation information Ư cho phép xác định địa chỉ tuyệt đối của câu lệnh và dữ liệu một khi chương trình được nạp vào bộ nhớ
* symbol table Ư lưu chứa các nhãn (label) chưa được định nghĩa
Kiến trúc Máy tính - Chap 03 45
…
) Linker
• Cịn gọi là link editor, cho phép ghép các object file riêng lẻ lại với nhau thành một chương trình thống nhất cĩ thể thực thi được gọi là executable file
• Quá trình ghép diễn ra theo 3 bước
* Xếp mã chương trình và dữ liệu lại với nhau
* Xác định địa chỉ cho các nhãn chương trình và dữ liệu
* So trùng các tham cứu nội và ngoại (internal/external reference)
• Một executable file cĩ các thành phần gần giống với object file trừ
các phần: relocation information, symbol table và debugging information
• Các object file, ngồi các chương trình do người dùng (user) viết, cịn cĩ các trình con viết sẵn trong thư viện (library) do compiler
…
) Loader
• Một executable file lưu trên đĩa cĩ thể được hệ điều hành đọc, nạp vào bộ nhớ và cho phép bắt đầu thực thi
• Cơng việc này, trên hệ điều hành UNIX, diễn ra theo các bước sau
* Đọc phần header để xác định kích thước của phần mã lệnh và dữ liệu
* Dành ra 1 khơng gian địa chỉ đủ lớn trong bộ nhớ để chứa mã lệnh và dữ liệu
* Chép mã lệnh và dữ liệu từ executable file vào bộ nhớ
* Chép các tham số đầu vào của chương trình chính vào bộ nhớ stack
* Khởi động trị cho các thanh ghi, trỏ stack pointer đến vị trí trống đầu tiên trong bộ nhớ
* Nhảy đến trình con start-up để chép các tham số đầu vào vào trong các thanh ghi tham số và sau đĩ gọi thực thi chương trình chính
* Khi chương trình chính kết thúc , trình con start-up kết thúc thực thi bằng lệnh goi exit
Kiến trúc Máy tính - Chap 03 47 Bài tập ) 3.1 , 3.2 , 3.4 , 3.5 , 3.6 , 3.9 ) 3.10 , 3.11 ) 3.16 ) 3.22
“Computer Organization and Design: the hardware/software
interface”,
John L. Hennessy & David A. Patterson, Second Edition, MORGAN KAUFMANN PUBLISHERS, INC. 1998
Khoa
Khoa KH & KT KH & KT MMááyy ttíínhnh
Bo
Boää mônmôn KỹKỹ thuathuaätät MaMaùyùy ttíínhnh
Pha
Phaïmïm TTưươơøngøng HaHaûûii Nguyễn
Kiến trúc Máy tính - Chap 04 2
Tài liệu tham khảo
) “Computer Organization and Design: the hardware/software interface”,
John L. Hennessy & David A. Patterson, Second Edition, MORGAN KAUFMANN PUBLISHERS, INC. 1998
) “Computer Architecture: a quantitative approach”,
John L. Hennessy & David A. Patterson, Third Edition, MORGAN KAUFMANN PUBLISHERS, INC. 2002
Kiến trúc Máy tính - Chap 04 4
4.1 Dẫn nhập
) Máy tính biểu diễn thơng tin dưới dạng nhị phân
) Các đại lượng số đếm cũng biểu diễn dưới dạng nhị phân ) Một số câu hỏi thường gặp • Cách biểu diễn số đếm trên máy tính ? • Các giới hạn trong biểu diễn số đếm ? • Cách tính tốn trên số nhị phân ? • Số thực ? v.v...
) Nội dung của chương này bao gồm
• Biểu diễn số đếm trên máy tính • Các giải thuật tính tốn
• Phần cứng hiện thực giải thuật tính tốn • Nhĩm lệnh tính tốn