VicoTas
Câu hỏi
avatar holovang10
25/05/2013 20:40

Có phải ngôn ngữ dùng trong lập trình hệ thống là assembly hay ngôn ngữ máy? Chức năng của các thanh ghi fs, gs?



Danh sách câu trả lời (1)
avatar jeaimertu_0395 25/05/2013 20:40
Lập trình hệ thống không nhất thiết phải lập trình bằng ngôn ngữ assembly hay ngôn ngữ máy. Thật vậy, tuyệt đại đa số các module chức năng cấu thành hệ điều hành Windows, Unix, Linux... đều được viết bằng ngôn ngữ C. Ưu điểm của các ngôn ngữ cấp cao là rõ ràng, dễ đọc, dễ diễn đạt giải thuật, diễn đạt giải thuật cô đọng... Như vậy, nếu chưa thật cần thiết phải dùng assembly hay ngôn ngữ máy, bạn nên dùng 1 ngôn ngữ cấp cao như C, C++ để viết các ứng dụng của bạn (mà bạn gọi là lập trình hệ thống).

Ngược lại, ngôn ngữ assembly hay ngôn ngữ máy không nhất thiết chỉ để dùng cho lập trình hệ thống mà có thể được dùng để viết ứng dụng bất kỳ. Tuy nhiên do nhược điểm của assembly và ngôn ngữ máy là quá yếu để diễn đạt giải thuật nên rất ít người dùng chúng trực tiếp. Như trên đã nói, ngay cả khi viết hệ điều hành hay các hệ thống nhúng (chương trình điều khiển thiết bị và được ghi trên ROM của thiết bị đó), người ta cũng cố gắng dùng ngôn ngữ cấp cao như C, trừ những đoạn code đặc biệt mới dùng assembly hay mã máy.

Trong trường hợp buộc phải dùng assembly hay mã máy, bạn phải lưu ý rằng các ngôn ngữ này phụ thuộc hoàn toàn vào CPU được dùng. Bạn không thể viết đoạn code assembly hay mã máy mà có thể chạy trên nhiều loại CPU được. Riêng đối với CPU Intel từ 80386 trở lên, nó có thể hoạt động ở 1 trong 3 chế độ quản lý bộ nhớ khác nhau như: Real-mode (chế độ mặc định khi bị reset ban đầu), protected-mode (quản lý theo segment) và 386-enchanced mode (quản lý vừa theo segment, vừa theo page, đây là chế độ quản lý bộ nhớ hoàn hảo nhất). Thí dụ khi mới boot máy hay khi máy được boot và chạy MSDOS, CPU Intel sẽ chạy ở chế độ Real-mode, còn khi máy đang chạy Linux, Windows XP... thì CPU Intel chạy ở chế độ 386-enchanced mode. Nếu bạn lập trình bằng ngôn ngữ cấp cao, bạn không cần biết chế độ quản lý bộ nhớ nào sẽ được dùng để chạy ứng dụng. Còn nếu lập trình bằng assembly hay mã máy, bạn cần phải nắm vững các chế độ quản lý bộ nhớ của CPU, phải quyết định chế độ quản lý nào sẽ dùng để chạy ứng dụng, từ đó mới bắt đầu viết lệnh tương thích với chế độ quản lý bộ nhớ mong muốn. Thí dụ nếu bạn lập trình ở chế độ real-mode (1 trong những chế độ 16-bit), bạn chỉ có thể dùng các thanh ghi 16-bit của CPU như ax, bx, cx, dx, ds, cs, es, ss). Còn nếu bạn lập trình ở chế độ 386-enchanced mode, bạn có thể dùng các thanh ghi 32 bit của CPU, trong đó có 2 thanh ghi fs, gs như bạn đề cập. Lưu ý rằng các ứng dụng viết ở chế độ 32bit chỉ có thể chạy trên môi trường Windows (hay Linux), chứ không thể chạy trên MSDOS được. Chi tiết về các chế độ quản lý bộ nhớ cũng như tập lệnh CPU ở từng chế độ quản lý bộ nhớ được trình bày trong tài liệu kỹ thuật giới thiệu CPU tương ứng. Bạn có thể tìm tài liệu kỹ thuật trên Internet hay liên hệ trực tiếp với các đại lý của Intel.
Trả lời câu hỏi
Tải lại mã
Câu hỏi lĩnh vực Lập trình
nophoto Giữa C++, C# và VB.Net thì nên học ngôn ngữ nào, có cần phải tiếp thu C++ trước khi chuyển sang C# hay học C# ngay?

Đăng lúc: 20:40 - 25/05/2013 trong Lập trình

nophoto Trong ngôn ngữ Java có package hoặc class nào phục vụ cho lập trình giao tiếp giữa máy tính với thiết bị I/O thông qua cổng RS232, LPT, USB ko

Đăng lúc: 20:40 - 25/05/2013 trong Lập trình

nophoto Xin hướng dẫn tạo form ứng dụng không có nút Close [X]?

Đăng lúc: 20:40 - 25/05/2013 trong Lập trình

nophoto Xin hướng dẫn lập trình driver cho WinXP để hiển thị hệ thống file Ext2, Ext3?

Đăng lúc: 20:40 - 25/05/2013 trong Lập trình

nophoto Xin cho biết một số chương trình soạn thảo Java phổ biến và không quá nặng như JBuilder?

Đăng lúc: 20:40 - 25/05/2013 trong Lập trình

nophoto Tôi cần chèn âm thanh vào phần mềm do mình thiết kế, Turbo C++ 3.0 có làm được điều này không hay phải sử dụng ngôn ngữ khác?

Đăng lúc: 20:40 - 25/05/2013 trong Lập trình

nophoto Trong Java có lớp lịch thế giới GregorianCalendar, vậy trong ngôn ngữ C# có lớp lịch tương tự không? Các phương thức của nó như thế nào?

Đăng lúc: 20:39 - 25/05/2013 trong Lập trình

nophoto Làm thế nào để người dùng không chọn được Form đang chạy bên dưới cửa sổ của 1 chương trình VB. Net ?

Đăng lúc: 20:39 - 25/05/2013 trong Lập trình

dang duc thang Làm thế nào để thể hiện chữ Việt có dấu với Turbo Pascal 7.0?

Đăng lúc: 20:39 - 25/05/2013 trong Lập trình

nophoto Làm thế nào để biết người dùng đã nhấn nút Minimize trên chương trình viết bằng VB .Net?

Đăng lúc: 20:39 - 25/05/2013 trong Lập trình

nophoto Tôi có viết 1 chương trình editor hiển thị tốt chữ Việt Unicode dựng sẵn nhưng không biết cách hiển thị chữ Việt Unicode tổ hợp?

Đăng lúc: 20:39 - 25/05/2013 trong Lập trình

nophoto Chương trình biên dịch được lập trình dựa trên ngôn ngữ nào?

Đăng lúc: 20:39 - 25/05/2013 trong Lập trình

Lê Thị Hoa Hồng Có cách nào nhận biết người dùng thêm/bớt 1 thư mục hay copy/tạo mới file hay di chuyển file/folder từ nơi này đến nơi khác không?

Đăng lúc: 20:39 - 25/05/2013 trong Lập trình

nophoto Lập trình VB .Net đọc barcode từ máy đọc barcode? Lưu hình vào SQL Server 2000?

Đăng lúc: 20:39 - 25/05/2013 trong Lập trình

nophoto Tài liệu về việc xử lý hình ảnh từ camera?

Đăng lúc: 20:39 - 25/05/2013 trong Lập trình

nophoto Làm sao để caption trên TitleBar của 1 ứng dụng trên VB6.0 hiển thị font chữ theo yêu cầu mà không ảnh hưởng đến font chữ của các ứng dụng khác?

Đăng lúc: 20:39 - 25/05/2013 trong Lập trình

nophoto Cách đóng gói chương trình VB.NET thành file setup?

Đăng lúc: 20:39 - 25/05/2013 trong Lập trình

nophoto Cấu trúc dữ liệu của các tập tin như: Bitmap, Audio? Trong Pascal có dùng được các hàm API của Windows không?

Đăng lúc: 20:39 - 25/05/2013 trong Lập trình

nophoto Trong VB, hàm hay API nào có thể cắt ảnh như trong Pascal?

Đăng lúc: 20:39 - 25/05/2013 trong Lập trình

MrTien Cùng 1 trang web .asp, cơ sở dữ liệu Access, khi dùng IIS 5.0 trong WinXP thì chạy bình thường, nhưng khi dùng IIS 6.0 của Win Server 2003 thì k chạy?

Đăng lúc: 20:39 - 25/05/2013 trong Lập trình

Rao vặt Siêu Vip