概述
查看linux内核代码时,常常看到下面八个汇编指令,下面简单讲解一下它们的含义和用法。
这8个是汇编常用的批量传送指令,用来加载或者存储几个连续的内存。
ldmib、ldmia、
ldmdb、ldmda、
stmib、stmia、
stmdb、stmda、
观察指令时可将指令分两部分解释:
ldm:Load Memory 加载内存,意思是将内存加载到CPU寄存器中;
stm:Store Memory 存储内存,意思是将寄存器内容存储到内存中,跟ldm是相反的传送方向;
ib:Increase Before 每次传送前内存地址加4;
ia:Increase After 每次传送后内存地址加4;
db:Decrease Before 每次传送前内存地址减4;
da:Decrease After 每次传送后内存地址减4;
例:
ldmib r3, {r5, r7} @将 [r3+4]、[r3+8] 的内容分别加载到 r5、r7;
ldmia r3, {r5, r6, r7} @将 [r3]、[r3+4]、[r+8] 的内容分别加载到 r5、r6、r7;
ldmdb r3, { r5, r6, r7} @将 [r3-4]、[r3-8]、[r3-12] 的内容分别加载到 r5、r6、r7;
ldmda r3, {r5 - r7} @将 [r3] 、[r3-4]、[r3-8] 的内容分别加载到 r5、r6、r7;
stmib r3, {r5, r7} @将 r5、r7 的内容分别存储到 [r3+4]、[r3+8];
stmia r3, {r5, r6, r7} @将 r5、r6、r7 的内容分别存储到 [r3]、[r3+4]、[r+8];
stmdb r3, { r5, r6, r7} @将 r5、r6、r7 的内容分别存储到 [r3-4]、[r3-8]、[r3-12];
stmda r3, {r5 - r7} @将 r5、r6、r7 的内容分别存储到 [r3] 、[r3-4]、[r3-8]。
最后
以上就是喜悦小鸭子为你收集整理的汇编批量传送指令的全部内容,希望文章能够帮你解决汇编批量传送指令所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复