我在我的 arm 匯編程式中使用 fgets() 函式呼叫并回圈遍歷檔案的內容并列印它。所有這些都有效,但我想在 fgets() 回傳 NULL 時退出程式。我實際上也無法弄清楚我應該比較它的內容。這是我所擁有的:
read_file:
mov r2, r5 //file pointer is stored in R5
ldr r0, =buffer
mov r1, #254
bl fgets
bl printf
cmp r0,#0
bne read_file
bl exit
我假設我應該檢查獲取字串的緩沖區,但我可能需要檢查另一個暫存器以獲得 NULL 回傳?
uj5u.com熱心網友回復:
問題是我比較了錯誤的回傳值。我已經正確地計算出回傳值應該存盤在 R0 中,但是我在這里與此代碼實際比較的是 printf()的回傳值,而不是fgets() 的回傳值,此時已被覆寫我在做一個比較。
bl fgets
bl printf
cmp r0,#0
在代碼中將比較向上移動并直接在 fgets() 之后它起作用了。
read_file:
mov r2, r5
ldr r0, =buffer
mov r1, #254
bl fgets
cmp r0, #0
beq exit
bl printf
bl read_file
bl exit
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/377382.html
下一篇:啟動代碼和重置處理程式有什么區別
