在汇编程序AMD64中,我调用fprintf,但它保持无限循环

时间:2012-09-11 20:54:57

标签: c assembly printf

我遇到了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

1 个答案:

答案 0 :(得分:0)

在System V AMD64 ABI中,可变参数函数期望al中的可变参数的实际数量。我没有看到你设置它。