因式分解在OAM中
我在这里有一些OAM代码,我查了所有的指示,他们做了怎样的操作,我把它全部写成了伪,但是我有一个定位问题(所以我可以统计程序中有多少个)循环。我觉得它应该在眼睛里凝视我,并且我已经在C/Java等中完成了一千个阶乘程序,但我在这里看不到它。因式分解在OAM中
因此,需要在用户条目 如果== 0它打破到完成[BRZ] 如果> 0破跳过用于为绝对值否定值[BRP] NEG
跳过程序会执行乘法和递减操作,然后执行更多条件以查看是否需要再次调用它,或者程序是否完成。
我基本上需要找到这个程序中的循环。就像我说的那样,它可能在我脸上凝视,但是这是一个关于分配者的一个松散问的问题。
编辑澄清: 程序不采用一个数的阶乘,而是多重乘以每个号码输入。
所以我可以把在3,-4,2,0和结果将是288 (3 * 2 * 1)(4 * 3 * 2 * 1)(2 * 1)
编辑BRI:
read: noop
lda stdin
brp return
neg
return: bri read
那么,它不只是一个阶乘.. 这将是C版:
int result = 1, value;
while(value = get_int()) {
next_loop:
value = abs(c);
do {
skip_loop:
result *= value;
value--;
} while (value > 0);
};
printf("%d\n", result);
所以它的阶乘的产品,并且恰好有两个循环。
有谁知道指令'BRI'?我找到了BR,BRP和BRZ但不是我.. – 2010-10-19 02:25:50
@John你有没有在上下文中?发表它。如果没有BRNZ操作码,可能意味着“BRANCH Inequal”。 – ruslik 2010-10-19 02:28:45
我想分析这段代码.. 上面编辑.. – 2010-10-19 02:29:49
在这种情况下,'BRI'似乎不是跳转操作码,因为'read'只是用作存储。在'return:'之后发布代码。 – ruslik 2010-10-19 02:36:14