Assembly 无用的储存和装载

Assembly 无用的储存和装载,assembly,arm,Assembly,Arm,在反编译程序中,我可以使用以下指令: 890c: e50b0008 str r0, [fp, #-8] 8910: e50b100c str r1, [fp, #-12] 8914: e51b0008 ldr r0, [fp, #-8] 8918: e51b100c ldr r1, [fp, #-12] 最后2个ldr的意义是什么?编译器在未完全优化时会发出这

在反编译程序中,我可以使用以下指令:

890c:       e50b0008        str     r0, [fp, #-8]
8910:       e50b100c        str     r1, [fp, #-12]
8914:       e51b0008        ldr     r0, [fp, #-8]
8918:       e51b100c        ldr     r1, [fp, #-12]

最后2个ldr的意义是什么?

编译器在未完全优化时会发出这些信息。线条像

a = 0;
return a;
当编译以进行调试时,将有点像这样

回复:评论:在这种情况下,它很可能是一个调用序列

a = something; //compiler: calculate in register, write out to memory
b = something_else; //compiler: calculate in register, write out to memory
Func(a, b); //compiler: pick up from memory, branch and link to the function

编译器在未完全优化时发出这些消息。线条像

a = 0;
return a;
当编译以进行调试时,将有点像这样

回复:评论:在这种情况下,它很可能是一个调用序列

a = something; //compiler: calculate in register, write out to memory
b = something_else; //compiler: calculate in register, write out to memory
Func(a, b); //compiler: pick up from memory, branch and link to the function

另一种可能是程序正在修改内存映射的I/O寄存器。

另一种可能是程序正在修改内存映射的I/O寄存器。

下一条指令是解释所有这些的bl。下一条指令是解释所有这些的bl。IO映射在[fp,-8]?没有理由fp不能用作通用寄存器映射到[fp,-8]?没有理由fp不能用作通用寄存器