2010-05-07 18 views
7

Küçük hobi projem için çalışma zamanında C++ programından makine kodu göndermem gerekiyor. Ben taban adresi 0xDEADBEEF varsa ve böyle bir şey yazmak istiyorum: Oluşturulan makine kodu programı devletin bağımlı olduğundanEtrafında bir çalışma zamanı C++ assembler kütüphanesi var mı?

Assembler a((void*)0xDEADBEEF); 
a.Emit() << 
    Push(Reg::Eax) << 
    Push(Reg::Ebx) << 
    Jmp(0xFEFEFEFE); 

Inline montajcı benim seçimim değil.

Bunu yapmak için herhangi bir kütüphane var mı? Hayır ise, bir tane sıfırdan geliştirmek ve açık kaynak yapmak iyi bir fikir olur mu? (Varsa, bu kütüphaneyi kullanan herhangi biri var mı?)

cevap

3

Nicolas Capen'in softwire'unu kullanabilirsiniz. Artık, şimdi, SoftAsm adlı Transgaming'de benzer bir ürün üzerinde çalıştığı için artık desteklenmiyor. Yine de istediğini yapar.

Haziran 2014'i Düzenle: - Yukarıdaki sourceforge bağlantısı kaldırılmış gibi görünüyor, ancak bir LGPL lisansı here altında görünmektedir.

+0

Bu cevap şu anda modası geçmiş. En azından bu sayfada hiç indirme yapamıyorum –

3

Bu, birçok platformları desteklediği için kendi ara diline sahip olduğu, optimizasyonlar yaptığı için bir overkill olabilir, ancak http://llvm.org/ bir tanrı gibi görünüyor Deneyin.

+1

Bu harika bir proje, ama çok ağır ve (anladığım kadarıyla) bana verilen talimatlar üzerinde iyi kontrol sağlamıyor. Yine de teşekkürler. – Anton

7

Asmjit'a bakın. Aradığın şey gibi görünüyor.

İlgili konular