[Bug d/105413] gdc extended assembler cannot constraints r8 - r15
ibuclaw at gdcproject dot org
gcc-bugzilla@gcc.gnu.org
Fri Jun 24 19:19:00 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105413
Iain Buclaw <ibuclaw at gdcproject dot org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |FIXED
Status|UNCONFIRMED |RESOLVED
--- Comment #2 from Iain Buclaw <ibuclaw at gdcproject dot org> ---
@register attribute has been added, meaning that you can now have the following
as an alternative to your example.
---
import gcc.attributes : register;
@register("rax") SYSCALL rax = ident; // rax - syscall number
@register("rdi") size_t rdi = arg1; // rdi - arg1
@register("rsi") size_t rsi = arg2; // rsi - arg2
@register("rdx") size_t rdx = arg3; // rdx - arg3
@register("r10") size_t r10 = arg4; // r10 - arg4
asm @nogc nothrow {
"syscall"
: "=r" (rax)
// inputs:
: "r" (rax),
"r" (rdi),
"r" (rsi),
"r" (rdx),
"r" (r10),
"m"( *cast(ubyte*)arg1) // "dummy" input instead of full memory clobber
// clobers
: "rcx", "r11"; // Clobers rax, and rcx and r11.
}
return rax;
---
https://godbolt.org/z/PvnTsea9T
More information about the Gcc-bugs
mailing list