Personally I prefer that destination operands are on the left, because that tracks with assignments in normal programming languages. I don't really understand why you would want the opposite.
Personally I prefer that destination operands are on the left, because that tracks with assignments in normal programming languages. I don't really understand why you would want the opposite.
ADD foo bar
not as foo + bar
but as foo += bar
And then apply a prefix syntax correction, to end up with += foo bar
(Or, equivalently, always mentally add the word "TO" to each operator that modifies an argument, which is most)Also, most intel instructions use one or two arguments as input, and modify one of them as output. It sort of makes sense to have the output (or input/output) argument always be in the same position, regardless of whether an instruction takes 1 or 2 args. BTW, even in riscv where "add" takes three args, i.e. the form is a = b + c, the output-only argument a comes first.
Yeah, this is how I think about it too. It's natural to have the destination operand always as the first one (i.e. left hand side). I think the GNU tools all use the AT&T syntax (destination is last), and I hate it.
Some bizarre high level conventions, like using '=' for assignment, were also adopted from earlier languages but are now commonplace.
I agree that we should just pick a convention!