If statement 我需要用ARC汇编语言实现以下代码段
执行比较的关键是减法指令(更新标志的版本,即If statement 我需要用ARC汇编语言实现以下代码段,if-statement,assembly,architecture,arc-architecture,If Statement,Assembly,Architecture,Arc Architecture,执行比较的关键是减法指令(更新标志的版本,即subcc)。 您可以指定%r0作为目标操作数,因为不需要这种减法的结果(利用ARC三个操作数形式) 假设你这样做 ! This program executes an If/else statement .begin .org 2048 prog1: ld [X], %r1 ! this loads memory X into register 1 ld [Y], %r2 ! this loads
subcc
)。您可以指定
%r0
作为目标操作数,因为不需要这种减法的结果(利用ARC三个操作数形式)
假设你这样做
! This program executes an If/else statement
.begin
.org 2048
prog1: ld [X], %r1 ! this loads memory X into register 1
ld [Y], %r2 ! this loads memory y into register 2
X: 0
Y: 0
Z: 0
.end
以下是事实
- 结果写入
r0
- 如果设置了
标志,则C
r2>r1
- 如果未设置
标志,则执行比较的关键是减法指令(更新标志的版本,即C
)。subcc
您可以指定
作为目标操作数,因为不需要这种减法的结果(利用ARC三个操作数形式) 假设你这样做%r0
以下是事实! This program executes an If/else statement .begin .org 2048 prog1: ld [X], %r1 ! this loads memory X into register 1 ld [Y], %r2 ! this loads memory y into register 2 X: 0 Y: 0 Z: 0 .end
- 结果写入
r0
- 如果设置了
标志,则C
r2>r1
- 如果未设置
标志,则C
r2
subcc %r1, %r2, %r0
! This program executes an If/else statement .begin .org 2048 prog1: ld [X], %r1 ! this loads memory X into register 1 ld [Y], %r2 ! this loads memory y into register 2 ld [Z], %r3 ! this loads memory z into register 3 subcc %r2, %r1, %r0 !y ? x bcs .else_if ;x > y add %r2, 1, %r2 !y = y + 1 ba .end .else_if: subcc %r1, %r3, $r0 ;x ? z beq .else ;x == z sub %r2, 1, %r2 ba .end .else: add %r3, 1, %r3 !z = z + 1 ba .end X: 0 Y: 0 Z: 0 .end
- 结果写入