2009-08-18 14 views

cevap

9

Doğru, hala VS 2010 Beta 1 desteklenmiyor. Tahminim, satır içi montajın uygulanması çok zor olduğu: Microsoft'un uyguladığı yol, C kodunun içine girip çıkabilmesi için C kodunu çevreleyen C koduyla entegre olur ve uygun tutkal kodu otomatik olarak enjekte edilir. Bunun için, C derleyicisi aslında assembler kodunu anlamak gerekir; AMD64 ve Itanium için bunu uygulamamışlar.

+1

C derleyici, ASM'yi bir ara ürün olarak üretir, AMD64'te satır içi ASM'ye izin vermek için "zor" yapan hiçbir şey yoktur. Platform özellikleri, inline ASM'nin x86_64 hedefleri için x86 için destekleyen birkaç derleyicide bulunmamasının yegane sebebidir. –

+0

@MarkKCowan: Gördünüz mü * MSVC'nin satır içi ASM'si? Çok fazla, ne demek istediğimi; C/C++ değişkenlerini derleme kodu metniyle serbestçe karıştırabilirsiniz, böylece derleyici, tüm kodun çözümlenmesini ve (kodun), kodun, printf'i anımsatan bir tarzda, montaj kodunun kendisinde belirtildiği gibi değil Dizeleri biçimlendirmek ve girdilerin, çıktıların ve klozetlenmiş yazmaçların açık tanımları, derleyicinin derlemeyi analiz etmeye çalışmasına yönelik herhangi bir ihtiyacı ortadan kaldırır. Dürüst olmak gerekirse, GCC'nin yaklaşımını tercih ediyorum, çünkü derleyicinin daha az ikinci tahminini içeriyor. – SamB

+1

@SamB yep, Delphi'deki satır içi montajla aynı. Keşke GCC'nin AT & T sözdizimini kullanmadıysa :( –

3

O

Bu sürece C kuralları takip gibi bir birleştirici ile yazılmış bir işlevi çağırmak için oldukça kolay ... sadece düşmesi oldukça büyük özelliği gibi görünüyor. This tutorial, nasıl olduğunu açıklar.

+0

Sadece gerçek kısıtlama, C ve ASM'yi aynı rutinde karıştıramazsınız.İnline ASM karışımının bilimsel kodda yaygın olduğu bir Pascal arka planından geldiğimde, dillerin farklı fonksiyonlara ayrılmasını sağlama kararına tamamen katılabilirim. –