如果我在asm上有一个呼叫程序:
push ebp
mov ebp esp
sub ebp, 8
我现在可以假设[ebp-4]和[ebp-8]都被初始化为零,或者它们是否有随机值?
答案 0 :(得分:7)
他们之前将拥有该记忆中的任何值,这不可能是0
。这本身并不是“随机的” - 事实上,它可能有些可预测;这通常没有任何好处,但是没有任何关于将它用于RNG的聪明想法:)
请记住,您在该代码中所做的只是:
除非你告诉它,否则CPU不会读取任何内容。这是汇编程序的本质。此外,当在普通算术中使用时,ESP根本不是特殊的 - 它只是一个数字。
答案 1 :(得分:5)
你永远不应该依赖于此,因为这可能取决于实现。要处于可预测状态,始终初始化具有特定值的寄存器或存储单元。
答案 2 :(得分:3)
除非您明确初始化它们,否则它们肯定会有随机值。
答案 3 :(得分:2)
他们将拥有随机值。