我试图用ARMAssembly语言编写程序,我从一开始就遇到了困难。我正在尝试编写一个程序,对以下复杂条件进行短路评估: if((x> y& y> z)||(y< z&& y< x))。我理解我将x,y和z放入r1,r2和r3但我对语法和其他所有内容感到困惑。非常感谢协助。
答案 0 :(得分:1)
解决这些问题的方法是重写C输入,使每个C语句对应一个汇编指令。
这是原始的C代码:
if ((x > y && y > z) || (y < z && y < x)) {
true-action;
} else {
false-action;
}
这是重写的C代码:
bool xgty = x > y;
if (xgty) goto L1;
bool ygtz = y > z;
if (!ygtz) goto false-action;
L1:
bool yltz = y < z;
if (!yltz) goto false-action;
bool yltx = y < x;
if (!yltx) goto false-action;
true-action:
...
goto done;
false-action:
...
done:
将其翻译成汇编程序应该是微不足道的。