我是靠谱客的博主 喜悦小鸭子,最近开发中收集的这篇文章主要介绍​​​​​​汇编批量传送指令,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

查看linux内核代码时,常常看到下面八个汇编指令,下面简单讲解一下它们的含义和用法。

这8个是汇编常用的批量传送指令,用来加载或者存储几个连续的内存。

ldmibldmia

ldmdbldmda

stmibstmia

stmdbstmda

观察指令时可将指令分两部分解释:

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]。

最后

以上就是喜悦小鸭子为你收集整理的​​​​​​汇编批量传送指令的全部内容,希望文章能够帮你解决​​​​​​汇编批量传送指令所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部