How to port this GCC assembly to gdc?
Iain Buclaw
ibuclaw at gdcproject.org
Thu Oct 24 14:41:35 UTC 2019
On Thu, 24 Oct 2019 at 12:05, drug via D.gnu <d.gnu at puremagic.com> wrote:
>
> Hello!
>
> I have the following assebly:
> ```C
> __asm__ __volatile__ (
> "990: nop\n" \
> ".pushsection .note.stapsdt,\"?\",\"note\"\n" \
> ".balign 4\n" \
> ".4byte 992f-991f, 994f-993f, 3\n" \
> "991: .asciz \"stapsdt\"\n" \
> "992: .balign 4\n" \
> "993: .8byte 990b\n" \
> ".8byte _.stapsdt.base\n" \
> ".8byte 0\n" \
> ".asciz \"myapp\"\n" \
> ".asciz \"func_call\"\n" \
> ".asciz \"%n[_SDT_S1]@%[_SDT_A1] %n[_SDT_S2]@%[_SDT_A2]\"\n" \
> "994: .balign 4\n" \
> ".popsection\n"
> :: [_SDT_S1] "n" (4),
> [_SDT_A1] "nor" ((a)),
> [_SDT_S2] "n" (4),
> [_SDT_A2] "nor" ((b))
> );
> ```
> this code compiles by gcc but gdc ((Debian 6.3.0-18+deb9u1) 6.3.0
> 20170516) fails. It doesn't like __volatile__ keyword and :: syntax
>
> ```D
> __asm__ (
> "990: nop"
> ".pushsection .note.stapsdt,\"?\",\"note\""
> ".balign 4"
> ".4byte 992f-991f, 994f-993f, 3"
> "991: .asciz \"stapsdt\""
> "992: .balign 4"
> "993: .8byte 990b"
> ".8byte _.stapsdt.base"
> ".8byte 0"
> ".asciz \"myapp\""
> ".asciz \"func_call\""
> ".asciz \"%n[_SDT_S1]@%[_SDT_A1] %n[_SDT_S2]@%[_SDT_A2]\""
> "994: .balign 4"
> ".popsection\n"
> :: [_SDT_S1] "n" (4),
> [_SDT_A1] "nor" ((a)),
> [_SDT_S2] "n" (4),
> [_SDT_A2] "nor" ((b))
> );
> ```
It looks like this is a top-level inline asslembler declaration? D
doesn't support top-level inline assembler, however I think this would
be a useful feature to allow.
As for the syntax, it's `asm { ... }`
--
Iain
More information about the D.gnu
mailing list