# [C (gcc)] `-zexecstack` `-Wl,-e$` `-nostartfiles` on Linux x86-64, <s>876</s> 914 bytes, score <s>798</s> 293

<!-- language-all: lang-c -->

    $=1111+1111+1111+111+111-11-11-11-11+1+1+1;$$=1111111111+111111111-11111111+1111111+1111111-111111+1111+1111+111+111+111+111+111-11-11-11-11+1+1+1+1+1;$$$=111111+111111-11111-1111+111+111+111-11-1-1-1-1-1;$$$$=111111111+111111111+11111111+11111111+11111111+1111111+1111111+111111-1111-1111-1111-1111-111-111-111+11+11+11+11+1+1+1+1+1;$$$$$=1111111111+1111111111-111111111-111111111-111111111-111111111+11111111+11111111+11111111+11111111-1111111-1111111-1111111-111111-111111-111111+11111+11111-1111+111+111+11+1;$$$$$$=111111111+111111111+111111111+111111111+111111111-11111111-1111111-1111111-1111111-1111111-111111-111111+1111+1111+1111+1111+1111-111-111-111+11+11-1-1;$$$$$$$=1111111111+1111111111-111111111-111111111-111111111-111111111+11111111+11111111+11111111+11111111-1111111-1111111-111111-111111-111111-111111-111111-1111-1111-1111-1111-1111+11+11+11+11+1;$$$$$$$$=11111-1111-1111-111-111-111-11+1+1+1;

[Try it online!][TIO-kew4wa2n]

[C (gcc)]: https://gcc.gnu.org/
[TIO-kew4wa2n]: https://tio.run/##xVPLDoMgEPwZbts9eG76HT2bDZqmxCbFQ9OP71YrII9FvZXH7ASBHQYk7ImY1aWZCiQwd4wa/OpZLXOXAoFhPgTph3Jv2MzjcvlkEG@GjbTc13lVpBFKVidZxAr4DkmLZVdcWm3aYQe0htmViKX/DnP/vORt10SGB8VIaiQo3Q1X@k9Pd4ME6evwZ3CHkB/U@psxf6gzbW8Z3/qlyY4t3Rmv5oRaMQ6PaeA5djej7Rc "C (gcc) – Try It Online"

Charset: <s>`A[]={+,-1};`</s> `1+-$=;`

Same method as the previous answer, with even more hacking to supply a custom entry point named `$` (which has the smallest ASCII value among `a-zA-Z_$`). Credit to [this SO answer](https://stackoverflow.com/a/58613764/4595904) for identifying the flags and assembly setup to make this work. Also got a hint from [ceilingcat's awesome linker hack](https://codegolf.stackexchange.com/a/210828/78410) to remove `[]{}` from the code.

Assembly: (NASM syntax)

```
bits 64
global _start
_start:
  mov edx, 13
  pop rax
  push rax
  lea rsi, [rel s]
  pop rdi
  syscall
s: db "Hello, World!"
```

Uses the `argc=1` set up on the stack to load the value 1 to `rax` and `rdi`. The instructions are slightly mixed up in order to get the minimal code length in C.

[Here](https://tio.run/##tVFNb6MwEL37V8xlZTtAYyBfopv9Db0ja0UTJ3FFDAKybbPqb0/HU0TDSo16WQ7jx8x7b8bj@rU7VC69XLZmB1uzqY511RrhZMYAzrCGePjuocX/XGPh@WBLA85zAOwOHPxawznDM8LTEwNktl0jzjIEHnBNTFMOXJjAAqZTtP9SFY1VP9cQUYvgu@Rxj@D2ZK3JcKrpFG@sMNWY7tQ44PzuqbJOtHkWxVoyNlrTw3/b0zensa4@dUKysu2wpflTlILnHALoC18grrlkOE5pnECphB8wy8Cb@HGUxsWJGUSjumTudKSLYSa3Gm0IBLGnq5dYqSGVDKmrZHqVxPSuasDiTNAUbm@ECoduITbTQzdcFSSTSZr0@0OLleo9/J4w562ct/IazerGuk54LFljvAkP@8Udi1oMrxcSX8pegNSPGRDI28qHm9LL5eRau3dmC5tD0cCxsO73o3W5RsO/@Jrq5bEIMaotRfVvnK8oEp4RXhEznRMn7ZnkNNLtCH/E@ad6QXixuYrESQgnvdN8@VlZJlfcGbFi9nb/Dg) is the Python script that generates the "ones decomposition" from the `xxd -i` output (C include-style hex output) of the compiled binary.

---

# [C (gcc)] `-zexecstack` on Linux x86-64, 891 bytes, score 1154

<!-- language-all: lang-c -->

    main[]={1111+1111+1111+111+111-11-11-11-11+1+1+1,1111111111-111111111-111111111+11111111-1111111-111111-111111-111111-111111+11111-1111-1111-1111-1111+111+111+111+11,1+1+1+1,111111111-11111111-11111111-1111111-1111111-1111111-1111111+111111+111111+111111+111111+11111+11111+11111+11111-111-111-111-111-111-11-11-11,1111111111+1111111111-111111111-111111111-111111111-111111111+11111111+11111111+11111111+11111111-1111111-1111111-1111111+111111+11111+11111+11111+11111-1111-111-111+11+11+11,1111111111+111111111+111111111+111111111+11111111+11111111-1111111-1111111-1111111-1111111-111111-111111-111111-111111-11111-11111-11111-11111-11111+1111+1111+1111+1111-111-111-111-11-1-1-1-1,1111111111+111111111+111111111+111111111+111111111+111111111+11111111+11111111-1111111-1111111-1111111-1111111+111111+111111+111111+11111+11111+11111+11111+11111-1111-1111-1111-1111-111+11-1-1-1-1-1,11+11+11};

[Try it online!][TIO-k871movx]

[C (gcc)]: https://gcc.gnu.org/
[TIO-k871movx]: https://tio.run/##S9ZNT07@/z83MTMvOta22hAItFEIENZFQtpgqGMIB7pYWNroQrp4KG0EB43QRsU6GJbr4mTgorUJUpikLnYMQUghoY0/UPAGFB4GUV7B7mq4c7VhCKtz8bK0iQ1aXYIULlIbC4ER2BBIuvsp8hNJ6QR3QoZGgS6yNyDxUWv9//@/5LScxPTi/7pVqRWpycUlicnZAA "C (gcc) – Try It Online"

Uses [ceilingcat's minimal Turing-complete charset](https://codegolf.stackexchange.com/a/110834/78410) `main[]={1+,};`, plus `-` to meet the code length limit.

Assembly: (NASM syntax)

```
bits 64
global _start
_start:
  mov edx, 13
  lea rsi, [rel s]
  mov eax, edi
  syscall
s: db "Hello, World!"
```

Essentially calls `write` syscall once, and goes into arbitrary instructions formed by the string literal, causing segfault.