Для заданных кодов в C, например,
if a>b
c=a+b+10
else
c=b-a
Мой код на языке ассемблера без использования перехода:
ADR R0,a
ADR R1,b
ADR R2,c
LDR R0,[R0]
LDR R1,[R1]
CMP R0,R1
ADDGT R0,R0,R1
ADDGT R0,#10
STRGT R0,[R2]
SUBLE R1,R1,R0
STRLE R1,[R2]
Предположим, R0> R1, поэтому флаги были установлены в строках CMP
ADDGT и STRGT будут работать из-за флагов.Что если ADDGT R0, R0, R1 имеет значение, которое изменит флаг (возможно, причина V = 1).мы не делали здесь «ADDGTS», чтобы следующий ADDGT мог работать, но не влиял бы на действительное значение R0 ??
Спасибо