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
當我編譯我的代碼但它不能解決seg故障時,我從「不兼容的指針類型」警告中刪除了「classify'的arg 2」警告。 – Alfred 2014-11-06 03:22:16
@Alfred,我建議你在C中編寫'display'函數來測試你的程序。之後,您可以將'display'功能轉換爲彙編語言。 – bkyee 2014-11-07 06:56:21