2013-07-10 11 views
5

は、私がどのように見えるかの素敵なビットを生成するためのコマンドLLVM /打ち鳴らすは、MIPSにoutputingが、SPIMで働いていない....

clang -emit-llvm hello.c -c -o hello.bc 
llc hello.bc -march=mipsel -relocation-model=static -o hello.s 

を使用することができ、ファイル

#include <stdio.h> 

int main() { 
     printf("hello world\n"); 
     return 0; 
} 

を考えます残念ながら、私がMIPS用の信頼できるSPIMシミュレータでそれを実行しようとすると、そのSPIMオブジェクトがほぼすべての行に見つかります。 '.Section .mdebug.abi32'だけでなく、 という形式の行は '.cfi *'という形式で表示されます(さらにMIPSのように見えるので...)。 'lui $ 2、%hi (__gnu_local_gp)」に反対している。私はSPIMとLLVMが対処することをMIPSの異なる味のいくつかの情報を探しています

、MIPSのシミュレータの一例を与えるためにまたは誰かが、私はそれがMIPSを受け付けて実行することができますLLVMが生産されていることをコード。

.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 

答えて

0

LLVMでのMIPSアセンブリのプリンタは、ガス形式の組立(GNUアセンブラとの互換性ツールによる消費に適した)を発する。非常に良いチャンスSPIがありますMはそれを読むことができません。ただし、SPIMがMipsバイナリを読み取ることができる場合は、LLVMからオブジェクトファイルを発行し、SPIMにそのファイルを処理させることができます。

バイナリは、CPU自体が理解しなければならないため、より汎用的です。悲しいかな、各アセンブラは通常、それが理解できる独自の構文を持ち、アセンブラは相互に互換性がなく、演算子の順序、句読のセマンティクス、ディレクティブなどの基本的なものには同意しません。

1

Spimはgnuアセンブラをサポートしていない簡単な教示ツールです。様々な実際のMIPSプロセッサの完全なモデルを持っているOVPsimを試してみてください。あなたはOVPsim上でLinuxを走らせることができ、シミュレートされたLinux上でclangが生成したMIPS Linux実行ファイルを実行できるはずです。

+0

Linuxを使用している場合は、MipsにQEMU Linuxユーザーモードエミュレータを使用することもできます。それが私のclangベースのELLCCツールチェーンに使用しているものです。 (http://ellcc.org) –

関連する問題