Convert gcc assembly to ldc one
drug
drug2004 at bk.ru
Fri Oct 25 08:07:47 UTC 2019
On 10/24/19 2:13 PM, drug wrote:
> Hello!
>
> Could you help to port this code:
> ```
> __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))
> );
> ```
>
> I failed to find what is the ldc analog to gnu assembler InputOperands.
> What I need is converting ((a)) expression to `-4(%rbp)` string and
> ((b)) expression to `-8(%rbp)`
The answer is:
```
__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 "${0:n}@${1} ${2:n}@${3}"
994: .balign 4
.popsection`, "n, r, n, r", 4, a, 4, b);
```
https://godbolt.org/z/TUejUr
More information about the digitalmars-d-ldc
mailing list