benim derleyici tarafından üretilen bitcode LLVM bir programı çalıştırmak çalışıyorum ama lli
komutunu çalıştırdığınızda bir hata verirHata olduğunda direkt
lli-3.6: test2.ll:9:1: error: expected instruction opcode
'u clang -S -emit-llvm
tarafından oluşturulan ile kullandığımda çalışır. Yine de bu kodda birçok optimizasyon var. Bazılarını el ile eklemeye çalıştım ama işe yaramadı.
Sorunum, kodumun yapısının doğru olup olmadığını veya tercümanın düzgün çalışması için belirli bir noktayı eksik mi bilmiyorum. Aslında, JIT'i kodda kullanmayı denedim, ancak kütüphaneler ile bana daha fazla hata veriyordu ve dokümantasyon yararlı değildi.
Benim LLVM bitcode şudur:
%struct.test = type { i32, i32 }
define internal void @test_program() {
entry:
%a = alloca i32
store i32 5, i32* %a
call void @printf(i32 3)
%bar = alloca %struct.test
}
define internal void @f(i32 %x) {
entry:
%b = alloca i32
%mul = mul i32 6, 2
%add = add i32 %mul, 3
%add1 = add i32 10, %add
store i32 %add1, i32* %b
%tmp_eq = icmp eq i32* %b, i32 25
br i1 %tmp_eq, label %cond_true, label %cond_false
cond_true: ; preds = %entry
store i32 40, i32* %b
cond_false: ; preds = %entry
store i32 50, i32* %b
}
declare void @printf()
İlk önce, teşekkürler! Burada yorumlarda sorduğum başka bir hata olduğunu biliyorum, ancak şimdi "beklenen değer belirteci" hakkında bir hata atıyor. Her iki değere zaten aşağıdaki satırlarla i32 olarak değiştirdim: '% 0 = yük i32 *% b' ve'% tmp_eq = icmp eq i32% 2, i32 25' ama yine de çalışmıyor. Ne yapabileceğimi biliyor musun? – mk2
@rennomarcus bu ayrı bir soru ise, lütfen ayrı olarak sorun. :-) (ve size sorun veren tüm snippet'i dahil edin) – Oak