2014-11-06 73 views
0

我正在確定一個數字在我的函數中是否爲零。如果它是零,我需要傳遞一些像「Is Zero」這樣的字符串到我已經聲明爲B的變量中。我的函數確定它是否爲零,但是當我嘗試使用我的SPARC源代碼將字符串傳遞到變量B時我seg錯誤。Seg Faulting SPARC Assembly

以下是我在C驅動一直在努力:

void display(double, char*); 
char B[100]; 
double x = 0.000; 
display(x, &B); 

printf("%s", B); 

這裏是我的SPARC代碼:

ZERO: .asciz "Is Zero\n" 



.global display 
.section ".text" 
.align 4 
display:  
     save %sp, -96, %sp 


     mov %i0, %o0 
     mov %i1, %o1 
     mov%i2, %o2 

     call is_zero   ! check if number is zero 
     cmp %o0, 0 
     bne zero 
     nop 


zero: 
     save %sp, -96, %sp 
     set  ZERO, %l0 
     ldub [%l0], %l1 
     cmp  %l1, 0   ! exit when zero byte reached 
     beq  done 
     nop 
     stb  %l1, [%i2] 
     inc  %l0 
     inc  %i2 

     ba  zero 
     nop 
done: 
     ret 
     restore 

回答

1

& B是爲char數組B. 顯示功能,帶指針第二個參數中的字符指針。 display(x,& B)應顯示(x,B)。

+0

當我編譯我的代碼但它不能解決seg故障時,我從「不兼容的指針類型」警告中刪除了「classify'的arg 2」警告。 – Alfred 2014-11-06 03:22:16

+0

@Alfred,我建議你在C中編寫'display'函數來測試你的程序。之後,您可以將'display'功能轉換爲彙編語言。 – bkyee 2014-11-07 06:56:21