2009-07-10 36 views
19

Ngôn ngữ C được sử dụng để viết UNIX để đạt được tính di động - cùng một chương trình ngôn ngữ C được biên dịch bằng cách sử dụng các trình biên dịch khác nhau tạo ra các hướng dẫn máy khác nhau. Làm thế nào đến hệ điều hành Windows có thể chạy trên cả hai bộ vi xử lý Intel và AMD?Bộ vi xử lý Intel và AMD có cùng bộ xử lý không?

+0

Xin làm rõ câu hỏi bạn – Key

+2

không ai nhớ của AMD loạt K5 :) –

+0

Bây giờ AMD đang làm việc trên ARM64, câu hỏi này là :-) mơ hồ – Jeff

Trả lời

4

Như bạn nghi ngờ, bộ xử lý chính Intel và AMD có cùng một bộ lệnh.

Windows không chạy trên các chip ARM hoặc PowerPC, ví dụ, vì nó phần nào phụ thuộc vào tập lệnh cơ bản.

Tuy nhiên, hầu hết Windows được viết bằng C++ (theo như tôi biết), nên được di chuyển sang các kiến ​​trúc khác. Windows NT even ran on PowerPC and other architectures.

+2

Và nhìn vào nhân Linux cho một hệ điều hành chạy trên nhiều kiến ​​trúc, ngay cả với các bộ chỉ lệnh khác nhau. Trong khi mã C là di động, rất nhiều người lắp ráp phải được thay đổi cho mỗi mục tiêu. –

+3

XBox 360 sử dụng hạt nhân Windows 2000 đã sửa đổi, chạy trên kiến ​​trúc PPC. Tôi khá chắc chắn rằng Windows có lẽ là di động như các hệ điều hành khác trên mạng, không chỉ là một động lực mạnh mẽ cho Microsoft để cung cấp các phiên bản khác cho công chúng (cho, giống như, hai khách hàng, hoặc hơn). – Joey

+0

Câu trả lời này chủ yếu là đúng, ngoại trừ trường hợp các bộ chỉ lệnh SIMD. Mọi thứ bắt đầu phân kỳ khi bạn kết hợp trong 3DNow !, SSE1/2/3, vv nhưng đây cũng là lý do tại sao các trình biên dịch x86 thường không hỗ trợ các bộ lệnh này. – hythlodayr

4

AMD tương thích với Intel, nếu không họ sẽ không bao giờ giành được chỗ đứng trên thị trường.

Chúng có khả năng sao chép tương thích một cách hiệu quả.

Ryan

2

AMD và Intel sử dụng cùng một tập lệnh.

Khi bạn cài đặt các cửa sổ trên bộ xử lý AMD hoặc bộ xử lý Intel, nó không "biên dịch" mã trên máy.

Tôi nhớ nhiều người đang bối rối về chủ đề này trong thời gian học đại học. Họ tin rằng một "thiết lập" có nghĩa là nó đang biên dịch mã trên máy của bạn. Nó không phải là. Hầu hết nếu không phải tất cả các ứng dụng Windows bên ngoài các cõi tự do, được cung cấp cho bạn theo nhị phân.

Đối với tính di động, điều đó không thực sự đúng 100%. Mặc dù C có tính di động cao, trong nhiều trường hợp, việc viết cho một hệ điều hành hoặc hệ thống cụ thể sẽ dẫn đến mã chỉ có thể biên dịch/thực hiện trên hộp đó. Ví dụ, một số máy Unix xử lý các tập tin và thư mục khác nhau do đó nó có thể không được 100% di động.

24

Bộ vi xử lý AMD và Intel (*) có một bộ hướng dẫn chung chung, vì vậy có thể trình biên dịch hoặc trình biên dịch viết mã nhị phân chạy "giống nhau" trên cả hai.

Tuy nhiên, các gia đình xử lý khác nhau ngay cả từ một nhà sản xuất có bộ hướng dẫn riêng của họ, thường được gọi là "tiện ích" hoặc bất kỳ thứ gì. Bỏ qua bộ xử lý x87, lần đầu tiên tôi nhớ đây là một điểm tiếp thị là khi mọi thứ đột nhiên đi "với công nghệ MMX (TM)". Mã nhị phân được mong đợi chạy trên bất kỳ bộ xử lý nào hoặc cần phải tránh các phần mở rộng hoặc để phát hiện loại CPU trước khi sử dụng chúng.

Kiến trúc 64 bit của Intel hoàn toàn khác với kiến ​​trúc x86-64 của AMD, do đó trong một thời gian các dịch vụ 64 bit của chúng không tương thích (và Itanium không giống x86, trong khi x86-64 mở rộng lệnh bằng cách thêm 64bit hướng dẫn). Intel chớp mắt đầu tiên và được chấp nhận x86-64, mặc dù vẫn còn một vài khác biệt: http://en.wikipedia.org/wiki/X86-64#Differences_between_AMD64_and_Intel_64

Windows có thể sử dụng lệnh chung x86 hoặc x86-64 cho hầu như tất cả mã. Tôi sẽ không ngạc nhiên nếu các trình điều khiển và codec khác nhau được xuất xưởng trong nhiều phiên bản và được chọn đúng khi CPU đã được thẩm vấn.

(*) Trên thực tế, Intel chế tạo hoặc chế tạo các loại bộ xử lý khác nhau, bao gồm ARM (bộ vi xử lý ARM của Intel được gọi là XScale, nhưng tôi nghĩ rằng họ đã bán công việc đó). Và AMD cũng chế tạo các bộ xử lý khác.Nhưng chúng tôi biết bộ vi xử lý Intel/AMD nào bạn có ý nghĩa :-)

+4

+1. Bên trong, AMD và Intel thường xử lý các hướng dẫn chung này khá khác nhau: một số hướng dẫn có thể thực thi chậm hơn nhiều so với một kiến ​​trúc khác. –

+0

Có, điểm tốt. "Chạy cùng" đi kèm với in đẹp. –

+0

Chính xác và như vậy là trường hợp với Linux. Tôi là một hacker hạt nhân Linux và nếu bạn đã biên dịch lại hạt nhân Linux của riêng mình, bạn sẽ nhận thấy bạn có thể nhắm mục tiêu rất nhiều loại CPU và dĩ nhiên, chọn loại sai và cài đặt số tiền đó trong một vùng lõi hoặc treo hệ thống. Nice viết lên bởi onebyone trên này !!! – Eric

0

Bộ vi xử lý Intel và AMD có cùng bộ xử lý không? Một assembler lắp ráp một chương trình để chạy trên một bộ xử lý, vì vậy câu hỏi của bạn là thiếu sót. Bộ vi xử lý KHÔNG sử dụng bộ ghép.

Nếu bạn có nghĩa là bộ vi xử lý Intel và AMD có thể chạy cùng một bộ kết hợp? Sau đó, câu trả lời là CÓ !!!

Tất cả các trình lắp ráp là, là một chương trình lắp ráp các chương trình khác từ các tệp văn bản có cấu trúc. Visual Basic là một ví dụ về một trình biên dịch.

Các vấn đề liên quan