簡體   English   中英

在匯編器AMD64中,我稱fprintf但它會無限循環

[英]In assembler AMD64, I call fprintf but it keeps looping infinitely

我在fprintf上遇到了一個我無法理解的問題。 也許您可以找到解決此問題的方法。

您會看到,當我調用fprintf時,它會無緣無故地開始無限循環。 我不知道這是怎么回事,所以也許您可以幫我一下。

String_int:
    db 91; "[" 
    db 37; "%"
    db 115;"i"
    db 93; "]" 
    db 0;  "end_string" 

w_IN_ASCII:
    db 119; "w" 
    db 0;  "end_string" 

<SOME CODE>

    mov rdi, FILE_LOCATION;
    mov rsi, w_IN_ASCII;
    call fopen;
    mov r15, rax;

    cmp r15, 0; (with this I can be sure it is not a NULL)
    je .endProgram;

    mov rdi, r15;
    mov rsi, String_int;
    mov rdx, TO_PRINT_LOCATION;
    call fprintf; this is where my code dies

    mov rdi, r15;
    call fclose;

.endProgram:
    ret

在System V AMD64 ABI中,可變參數函數期望al中可變參數的實際數量。 我看不到您設置它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM