【发布时间】:2014-03-26 10:27:39
【问题描述】:
我想用两个整数从 C 中调用 printf 函数。 我的格式字符串是:
LC0:
db "odd bits: %d, even bits: %d", 10, 0
我有整数ob和eb:
ob: DD 0
eb: DD 0
然后我在最后做:
push dword [ob]
push dword [eb]
push LC0
call printf
add esp,8
但是,这给了我Odd bits: [ob], Even bits: [ob, repeated] 的结果,然后给了我一个分段错误。
我是不是调用了printf 函数错了?
编辑:
我加了LC1为db "even bits: %d", 10 0,然后重做:
push dword [ob]
push LC0
call printf
push dword [eb]
push LC1
call printf
add esp, 8
这给了我一个 REVERSED 的结果,将 eb 给 LC0 字符串,给 LC1 字符串,最后给出了分段错误。 有什么线索吗?
【问题讨论】:
-
这不是问题,但是你应该先推
eb,然后ob,因为你想从右到左推参数。 -
我修复了反转的结果,它是原始代码,但我只是忘记重新链接(对不起......)但是段错误仍然存在。