我们有一个任务,我们必须在64位nasm汇编中编写collatz猜想,只有13个或更少的命令(包括RET)。现在我们想知道你能减少多少。目前,我们对9
继承人伪码奇偶归一猜想,仅供参考:Collatz猜想汇编最短形式
继承人的代码,我们至今。一些注意事项:
我们的导师说我们可以删除XOR rax,rax因为一些调用约定它已经为零。它在我的电脑上不起作用,尽管我已将它包含在这里。
我知道两个LEA可能是最明显的减少,但是我们不能想到一种方法,因为* 6似乎是LEA唯一不可能做到的事情。
GLOBAL collatz
SECTION .text
collatz:
XOR rax, rax
.while:
SHR rdi, 1
JNC .even
LEA rdi, [rdi*2+1]
LEA rdi, [rdi*2+rdi+1]
.even:
INC rax
CMP rdi, 1
JA .while
RET
不要垃圾标签!你的**具体**问题是什么? – Olaf
我投票结束这个问题作为题外话,因为这实际上是更多的“代码高尔夫”问题。 –
@DavidHoelzer啊我从来没有意识到它是不允许的,因为它的技术可以解决。你在哪里推荐这个问题? – nn3112337