Arm 逻辑Orr臂

Arm 逻辑Orr臂,arm,logic,Arm,Logic,我是arm编程新手,我正在尝试理解以下代码的作用: .macro set_bit reg_addr bit ldr r4, =\reg_addr ldr r5, [r4] orr r5, #(1 << \bit) str r5, [r4] .endm .macro set\u bit reg\u addr bit ldr r4,=\reg\u地址 ldr r5,[r4] orr r5,#(1关于orr指令用于执行逻辑或运算,您是对的。在本问题的上下文中,该

我是arm编程新手,我正在尝试理解以下代码的作用:

.macro set_bit reg_addr bit

   ldr r4, =\reg_addr
   ldr r5, [r4]
   orr r5, #(1 << \bit)
   str r5, [r4]
.endm
.macro set\u bit reg\u addr bit
ldr r4,=\reg\u地址
ldr r5,[r4]

orr r5,#(1关于orr指令用于执行逻辑或运算,您是对的。在本问题的上下文中,该指令以以下格式使用- ORR{寄存器}{常数}


现在,这里的常数是(1,也就是orr,取r5和#)(1我用一个立即数检查了orr指令的ARM实现,看到确实需要一个目标寄存器-无论如何,如果r5和2以r5=1传递,最终结果将设置r5的第2位,因此r5现在将包含5(0101)