ここに、出力を生成するように設定された簡単なプログラムがあります。
The value of a is 2005
The value of b is 1959
The value of c is 1
The value of d is 0
The value of (a - b) * (c + d) is 46
私は自分のコードを最適化するための最良の方法を探しています、私はコードALOTを繰り返しています!他のレジスタから直接印刷することは可能ですか?例:SWI 0ですが、R0にない整数の場合は?
B main
aval DEFW 2005
bval DEFW 1959
cval DEFW 1
dval DEFW 0
valOf DEFB 'The value of \0'
isStr DEFB ' is \0'
lstStr DEFB 'The value of (a - b) * (c + d) is \0'
ALIGN
main ADR R0, valOf ;Value a
SWI 3
MOV R0, #97
SWI 0
ADR R0, isStr
SWI 3
LDR R0, aval
SWI 4
MOV R0, #10 ;print new line
SWI 0
ADR R0, valOf ;Value b
SWI 3
MOV R0, #98
SWI 0
ADR R0, isStr
SWI 3
LDR R0, bval
SWI 4
MOV R0, #10 ;print new line
SWI 0
ADR R0, valOf ;Value c
SWI 3
MOV R0, #99
SWI 0
ADR R0, isStr
SWI 3
LDR R0, cval
SWI 4
MOV R0, #10 ;print new line
SWI 0
ADR R0, valOf ;print 'value of '
SWI 3
MOV R0, #100
SWI 0
ADR R0, isStr ;
SWI 3
LDR R0, dval
SWI 4
MOV R0, #10 ;print new line
SWI 0
ADR R0, lstStr
SWI 3
LDR R3, aval
LDR R4, bval
LDR R5, cval
LDR R6, dval
SUB R1, R3, R4
SUB R2, R5, R6
MUL R0, R1, R2
SWI 4
SWI 2 ;exit
どんな考えでも大歓迎です:)