2010-08-07 35 views
5

Ngôn ngữ cấp thấp và Ngôn ngữ cấp hội đủ phụ thuộc vào máy. Câu hỏi của tôi là gì? Tôi có nghĩa là nó phụ thuộc vào bộ vi xử lý hoặc các tính năng của máy như RAM, đồng hồ, v.v.Phụ thuộc máy 'có nghĩa là gì'?

Và làm thế nào để các trình độ cao cấp vượt qua điều này?

Trả lời

5

Ở mức sâu nhất, điều đó có nghĩa là các tập lệnh khác nhau. Đặt một chuỗi bit cụ thể thông qua một bộ xử lý x86 sẽ giúp bạn có được kết quả hoàn toàn khác so với khi bạn đặt cùng một bộ bit thông qua bộ vi xử lý ARM.

Ngôn ngữ cấp cao hơn "khắc phục" điều này vì tất cả các máy tính đều làm được những điều tương tự, chỉ theo những cách khác nhau. ARM có cách để thêm hai số với nhau giống như x86, nó có cách tải dữ liệu từ RAM vào sổ đăng ký (và ngược lại) giống như x86, vv ..

Tất cả các cấu trúc mức cao cuối cùng có thể được giảm đến một tập hợp cơ bản các hoạt động có thể được thực hiện bởi tất cả các máy có mục đích chung (mặc dù một số cấu trúc có thể đi ra hiệu quả hơn trên một số CPU so với các CPU khác).

Đây là những gì trình biên dịch thực hiện. Chúng phân tích ngôn ngữ cấp cao và cách này hay cách khác, giảm ngôn ngữ máy của hệ thống đích. Thông thường chỉ chọn các bit của trình biên dịch cần phải được viết mới cho một CPU mới. Một số trình biên dịch (GCC là một ví dụ tuyệt vời) được xây dựng trong các lớp đơn giản hóa rất nhiều công việc này. Một nhà phát triển có kỹ năng cao quen thuộc với các trình biên dịch và nền tảng đích có thể tạo ra một cổng thô sơ khá dễ dàng. Trên mức độ chỉ đơn giản là giảm cấu trúc cho ngôn ngữ máy bản địa, có, tất nhiên, các vấn đề như đầu vào/đầu ra, truy cập hệ thống tập tin, vv. Đây cũng thường được xử lý trong lớp, thường chỉ với mức thấp nhất - - trình điều khiển - được viết lại cho một nền tảng mới, duy trì giao diện nhất quán với các cấp cao hơn.

Và ngay cả các trình điều khiển thường có thể được chia sẻ, toàn bộ hoặc một phần, trên các loại máy! các nền tảng x86 không phải là những nền tảng duy nhất đã có, ví dụ, một bus PCI. Và ngay cả khi xe buýt là khác nhau, các thiết bị nối với họ thường kết thúc là như nhau. Linux chia sẻ một số trình điều khiển thiết bị trên nhiều loại máy có ít hoặc không có thay đổi. Trình biên dịch xử lý các chi tiết dịch sang mã máy và các lớp bên trong của hạt nhân cố gắng trừu tượng hóa những khác biệt hành vi khác mà chúng có thể, người viết trình điều khiển chỉ cần gắn bó với các giao diện đã thiết lập.

Trước đây, bạn có câu hỏi về việc liệu trong một nền tảng nhất định, bất kỳ hệ thống cụ thể nào đều có thiết bị tùy chọn cụ thể (hoặc danh mục thiết bị). Ví dụ, nó sẽ là ngớ ngẩn cho hầu hết các máy chủ để có máy gia tốc 3D. Một số hệ thống có thể có bộ tạo số ngẫu nhiên phần cứng, một số có thể không. Một số có thể không có bộ nhớ cố định. Tuy nhiên, không đủ tiêu chuẩn, "sự phụ thuộc máy" thường không giải quyết được mức độ phụ thuộc này.

0

Phụ thuộc máy phụ thuộc vào phần cứng bao gồm máy tính - RAM có thể được truy cập thông qua bus CPU + RAM, vì vậy không phải là nhất thiết phải là một phần trong số này - tuy nhiên thẻ video, bộ nhớ ngoài, chuột/bàn phím v.v.

Điều này có được bằng cách trừu tượng hóa sự phức tạp của phần cứng bằng trình điều khiển có giao diện chung - ví dụ, DirectX tóm tắt tương tác với thẻ video bằng cách cung cấp giao diện được xác định rõ.