2012-10-09 14 views
7

Visual Studio 2010/2012'yi kullanarak, sonuç kodunun derleme çıktısını üretmek için /FAs anahtarıyla bir C++ kaynak dosyasını derleyebilirsiniz. Ancak oluşturulan asm dosyası tüm sembollerini karışık formda içerir.Visual Studio assembler çıktısı nasıl adlandırılır?

Visual Studio'nun yerine birleşik semboller oluşturmasını sağlamak için bir anahtar veya başka bir akıllı yöntem var mı? Birinin asm dosyasını undname.exe aracılığıyla elle besleyebildiğini biliyorum, ancak bir geçiş özel bir sonradan oluşturulma olayından çok daha kullanışlı olacaktır.

+0

Bu özellik mevcut değil. –

+0

extern C hakkında ne dersiniz? – NoSenseEtAl

cevap

0

Tüm sembolleriniz extern "C" ile uyumluyduysa, tüm sembollerin C++ kaynak dosyasında bir extern "C" bloğuna sarılabileceğinden, tüm sembollerin taklit edilmemiş C stilinde yayınlanmak yerine C++ ad mandallama uygulandı.

Microsoft Araştırma projesi http://en.wikipedia.org/wiki/Phoenix_%28compiler_framework%29, araç zincirine kancalar sağlar ve sembol adlarının nasıl oluşturulduğuna doğrudan müdahale etmesine izin verebilir, ancak ne yazık ki son kamu yayın sürümü VS 2008 için yapılmıştır ve içeriğe dahil edilmek üzere üretilmiyor gibi görünmemektedir. VS 2010 veya VS 2012 veya

+0

Ne yazık ki, benim sembollerimin çoğu "extern" C "ile uyumlu değil. – Bloops

1

/FA'nın çıktısının doğası gereği yapmak mümkün değildir. FA çıkışları geçerli montaj kodu. Birleştirilmemiş bir C++ işlevini ifade etmek için gerekli olan semboller, microsoft x86 montajında ​​basit bir şekilde geçerli olan etiket isimleri değildir. İsimsiz isim alanları için iyi bir işaret yoktur.

Bu davaları işleyen herhangi bir çıktı, bir assembler kullanılarak tamamlanamaz. Bu gibi isimleri işleyen bir assembler yapardınızsa, adının hangi kurallara uyup uymayacağını bilmesi gerekir. Bu, montaj çıktısının temel amacını bozar (neler olup bittiğini görmek için).