Hôm qua tôi đã học được rằng việc lắp ráp nội tuyến (với từ khóa __asm) không được hỗ trợ trong Microsoft Visual C++ khi biên dịch cho các mục tiêu AMD64 và Itanium.Tại sao MSVC không hỗ trợ lắp ráp nội tuyến cho các mục tiêu AMD64 và Itanium?
Điều đó có đúng không? Và nếu có, có ai biết tại sao họ không hỗ trợ lắp ráp nội tuyến cho những mục tiêu đó không? Có vẻ như một tính năng khá lớn để chỉ cần thả ...
Trình biên dịch C tạo ASM làm trung gian, không có gì khiến cho nó "khó" cho phép cho phép nội tuyến ASM trên AMD64. Thông số nền tảng là lý do duy nhất tại sao ASM nội tuyến không tồn tại cho các mục tiêu x86_64 trong một số trình biên dịch hỗ trợ nó cho x86. –
@MarkKCowan: Bạn đã xem * ASM nội tuyến của MSVC chưa? Nó liên quan đến rất nhiều ý nghĩa của việc làm; bạn có thể tự do trộn các biến C/C++ với văn bản mã assembly, vì vậy trình biên dịch phải phân tích cú pháp và (ở một mức độ nào đó) phân tích tất cả mã, không giống cách của GCC nơi mã assembly được xác định theo kiểu gợi nhớ của printf các chuỗi định dạng và các mô tả rõ ràng về các đầu vào, đầu ra và thanh ghi clobbered sẽ làm giảm bớt bất kỳ nhu cầu nào về trình biên dịch để cố gắng phân tích lắp ráp. Thành thật mà nói, tôi thích cách tiếp cận của GCC, vì nó liên quan đến việc ít trình biên dịch hơn. – SamB
@SamB yep, giống như lắp ráp nội tuyến ở Delphi. Tôi chỉ muốn GCC đã không sử dụng cú pháp AT & T: ( –