如何检查Wombat CPU仿真器中的数字是偶数还是奇数?
在C ++中,我们可以说
if(num%2==0) even else false
,
但是Wombat中没有模数%
指令,那么如何找到偶数或奇数呢?
答案 0 :(得分:2)
哇,这是一个非常有限的... ... CPU :-)如果没有and
指令,您可能会发现有必要执行divide
(通过值的两个),然后是该结果的multiply
(两个)。
假设divide
是一个整数运算,如果原始值是奇数,则半值将被舍入或截断,例如4
和5
均减半为{ {1}},然后加倍得到2
。
因此,如果该值是偶数,则“ half-then-double”运算的结果将与原始值相同,否则将有所不同。
因此,您可以使用4
后跟subtract
来选择偶数或奇数代码路径。
换句话说,是这样的:
jmpn
请记住,这是未经测试的,但它可能是一个不错的起点。我特别不确定Start: read // read to accumulator and store.
store Orig
divide Two // round to even then subtract original.
multiply Two
subtract Orig
jmpn WasOdd // Choose even/odd code path.
WasEven: ...
jump Done
WasOdd: ...
Done: stop
Orig: .data 2 0 // For original data.
Two: .data 2 2 // For halving/doubling.
伪操作,但是根据示例代码,目的是提供大小(字节数)和初始值。如果我误解了它的工作原理,则需要对此进行调整。