我們有一個任務,我們必須在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