Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I did this in my head and came up with -1*(-x - y); seems a little cheeky but acceptable.


If you're allowed negation, (like `-x`) then `x - (-y)` seems even better.


Subtract is a "built-in arithmetic instructions" so it wouldn't be allowed in this environment. The idea is to implement arithmetic, but from bitwise operations. https://en.wikipedia.org/wiki/Bitwise_operation


This is getting far afield from the actual Nanoprocessor, which has increment and decrement instructions. With those, you can add two numbers by repeatedly incrementing one and decrementing the other. (Which is a bit like addition using the Peano axioms.)

See page 126 of the Nanoprocessor User's Manual for code to add two numbers in this way.

https://www.hp9845.net/9845/downloads/manuals/Nanoprocessor....


One can also use the techniques demonstrated your reversing the ALU article. :)

https://www.righto.com/2020/08/reverse-engineering-8086s.htm...


Interesting problem. In this case though, I was just offering a pointless optimization to the parent post, which also used subtraction, so I assumed it was allowed.


Here's some background on how things like that work:

https://en.wikipedia.org/wiki/Adder_(electronics)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: