Một vấn đề thực thi như exe không hoạt động trên Linux (không có rượu). Khi biên dịch trình biên dịch mã nguồn tạo ra mã đối tượng mà cụ thể cho một kiến trúc cpu cụ thể. Nhưng cùng một ứng dụng không làm việc với trên một hệ điều hành khác với cùng một CPU. Tôi biết mã có thể bao gồm các hướng dẫn cụ thể cho hệ điều hành sẽ ngăn chặn chạy thực thi. Nhưng những gì về một chương trình đơn giản 2 + 2? Phần khó hiểu là những gì mã máy địa ngục ngăn cản làm việc. Mã máy cụ thể cho CPU phải không? Nếu chúng ta tách định dạng tệp thực thi, chúng ta có thể thấy cùng một mã máy (như 2 + 2) cho cả hai hệ điều hành không?Tại sao một chương trình thực thi cho một CPU cụ thể không hoạt động trên Linux và Windows?
Một câu hỏi nữa: Còn ngôn ngữ lắp ráp thì sao? DO cửa sổ và Linux sử dụng ngôn ngữ lắp ráp khác nhau cho cùng một CPU ?.
Bạn có thể kiểm tra câu trả lời mà mọi người đã cung cấp cho bạn bằng cách biên dịch một số mã đơn giản (ví dụ 'int main (int argc, char ** argv) {int a = 2; a + = 2; return 0;}') trên cả hai hệ điều hành, chạy 'objdump -dS' trên hai tệp' .o' và so sánh đầu ra asm - bạn sẽ thấy sự khác biệt trong đầu ra trình biên dịch. – laura
@ laura - đúng, nhưng sự khác biệt về trình biên dịch sẽ có khả năng áp đảo sự khác biệt nền tảng thực tế ở cấp đó. – codekaizen