数据交换指令
ARM 微处理器所支持数据交换指令能在存储器和寄存器之间交换数据。数据交换指令有如下两条:
— SWP 字数据交换指令
— SWPB 字节数据交换指令
1、SWP指令
SWP指令的格式为:SWP{条件} 目的寄存器,源寄存器 1,[ 源寄存器 2]
SWP指令用于将源寄存器 2所指向的存储器中的字数据传送到目的寄存器中,同时将源寄存器 1中的字数据传送到源寄存器 2所指向的存储器中。显然,当源寄存器 1和目的寄存器为同一个寄存器时,指令交换该寄存器和存储器的内容。指令示例:
SWP R0,R1,[R2] ;将 R2 所指向的存储器中的字数据传送到 R0,同时将 R1 中的字数据传送到 R2 所指向的存储单元。
SWP R0,R0,[R1] ;该指令完成将 R1 所指向的存储器中的字数据与 R0 中的字数据交换。
2、SWPB指令
SWPB指令的格式为:SWP{条件}B 目的寄存器,源寄存器 1,[ 源寄存器 2]
SWPB指令用于将源寄存器 2 所指向的存储器中的字节数据传送到目的寄存器中,目的寄存器的高 24 清零,同时将源寄存器 1 中的字节数据传送到源寄存器 2 所指向的存储器中。显然,当源寄存器 1和目的寄存器为同一个寄存器时,指令交换该寄存器和存储器的内容。指令示例:
SWPB R0,R1,[R2] ;将 R2 所指向的存储器中的字节数据传送到 R0,R0 的高 24 位清零,同时将 R1 中的低 8 位数据传送到 R2 所指向的存储单元。
SWPB R0,R0,[R1] ;该指令完成将 R1 所指向的存储器中的字节数据与 R0 中的低 8 位数据交换。