dosyayıLLVM/clang MIPS için çıkış olanağı fakat SPIM çalışmıyor ....
#include <stdio.h>
int main() {
printf("hello world\n");
return 0;
}
Verilen
ben neye benzediğini güzel bir bit üretmek için komutlar
clang -emit-llvm hello.c -c -o hello.bc
llc hello.bc -march=mipsel -relocation-model=static -o hello.s
kullanabilirsiniz MIPS kodu, (metnin ayrılmasını önlemek için aşağıda yer almaktadır) maalesef, MIPS için benim güvenilir SPIM simülatörümde çalıştırdığımda, SPIM'in neredeyse her satırındaki nesnelerini buluyorum. Sadece '.Section .mdebug.abi32' satırları değil, aynı zamanda formunun herhangi bir satırı '.cfi *' - ve daha da karmaşık bir şekilde (çünkü bana MIPS gibi görünüyor) çizgi 'lui $ 2,% hi (__gnu_local_gp)" itiraz edilir.
Ben SPIM ve LLVM ile baş o MIPS farklı tatlar bazı bilgiler arıyorum, veya birinin bu MIPS kabul ı çalıştırabilirsiniz MIPS simülatörünün bir örnek vermek LLVM ürettiğinde kodu.
.Section .mdebug.abi32
.previous
.file "hello.bc"
.text
.globl main
.align 2
.type main,@function
.set nomips16 # @main
.ent main
main:
.cfi_startproc
.frame $sp,32,$ra
.mask 0x80000000,-4
.fmask 0x00000000,0
.set noreorder
.set nomacro
# BB#0: # %entry
addiu $sp, $sp, -32
$tmp2:
.cfi_def_cfa_offset 32
sw $ra, 28($sp) # 4-byte Folded Spill
$tmp3:
.cfi_offset 31, -4
lui $2, %hi(__gnu_local_gp)
addiu $2, $2, %lo(__gnu_local_gp)
sw $2, 16($sp)
sw $zero, 24($sp)
lui $2, %hi($.str)
addiu $4, $2, %lo($.str)
jal printf
nop
addiu $2, $zero, 0
lw $ra, 28($sp) # 4-byte Folded Reload
addiu $sp, $sp, 32
jr $ra
nop
.set macro
.set reorder
.end main
$tmp4:
.size main, ($tmp4)-main
.cfi_endproc
.type $.str,@object # @.str
.section .rodata.str1.1,"aMS",@progbits,1
$.str:
.asciz "hello world\n"
.size $.str, 13
Linux'u çalıştırıyorsanız, başka bir yol da, Mips için QEMU Linux kullanıcı modu emülatörünü kullanmak olacaktır. Clang tabanlı ELLCC takım zincirim için kullanıyorum. (Http://ellcc.org) –