logoalt Hacker News

Krssstlast Thursday at 6:54 PM1 replyview on HN

Sorry, somewhat of a tangent but regarding:

> The %0 and %1 are positional references into a list you have to count by hand.

You can name your operands in gcc inline assembly.

https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#Output-...

Look for "asmSymbolicName".

On a phone so not checking if it builds, but something like `asm("add %[my_out], %[my_in], #3":[my_out]"=r"(outvar):[my_in]"r"(invar):);`.


Replies

gingerBilllast Thursday at 10:25 PM

The equivalent Odin syntax looks like this:

add_three :: asm(my_in: u64) -> (my_out: u64) { add my_out, my_in, 3 }

out_var = add_three(in_var)

Which is already infinitely more readable and requires no parochial sigils nor the arcane clobbering syntax.