ARMAssembly短路程序

时间:2017-04-26 18:46:04

标签: c arm

我试图用ARMAssembly语言编写程序,我从一开始就遇到了困难。我正在尝试编写一个程序,对以下复杂条件进行短路评估: if((x> y& y> z)||(y< z&& y< x))。我理解我将x,y和z放入r1,r2和r3但我对语法和其他所有内容感到困惑。非常感谢协助。

1 个答案:

答案 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:

将其翻译成汇编程序应该是微不足道的。