我目前正在尝试写入文件到目前为止,我有以下代码附加到该文件。有谁知道为什么这不起作用?它运行良好,但最终没有任何改变。
filewritemode: .asciz "a"
filelocation: .asciz "/h/test.txt"
_main:
push $filelocation
push $filewritemode
call _fopen
push $blabla
push %eax
call _fprintf
push $result
call _printf
push $0
call _exit # exit the program
使用gcc将源文件转换为.exe $ blabla目前是带有一些随机字符的字符串,用于测试
答案 0 :(得分:2)
您正在将参数传递给fopen
,而您没有检查错误。在这种情况下,ltrace
可能是您的朋友。
答案 1 :(得分:2)
它不起作用,因为您以错误的顺序推送了fopen
的参数。必须将参数从最后推到第一个。除此之外,您反复推送参数,但不要再次删除它们。在这种情况下,因为你潜水到exit
,但是如果相反你会用ret
指令返回,你会发现这会导致崩溃,因为你会跳到推送参数之一。