我正在做一个二进制分析项目,我遇到了ldmia arm汇编指令的两个不同变体。
ldmia.w sp,{r1,r2}
ldmia.w sp!,{r1,r2}
我知道ldmia.w sp!,{r1,r2}是pop {r1,r2}的同义词。但是ldmia.w sp,{r1,r2}呢?我是将存储在sp中的值作为内存地址加载到r1和r2中,这对我来说没有多大意义,还是在没有更新sp的值的情况下从堆栈中弹出,这也没有意义。
发布于 2021-08-26 07:32:21
有关ARM汇编语言各个部分的含义,请参阅ARM体系结构参考手册。!标志表示新地址被写回寄存器。也就是说,ldmia.w sp!, {r1, r2}将8加到sp,但ldmia.w sp, {r1, r2}保持sp不变。
https://stackoverflow.com/questions/68934248
复制相似问题