# [C (gcc)] `-zexecstack` `-Wl,-eA` `-nostartfiles` on Linux x86-64, 876 bytes, score 798 <!-- language-all: lang-c --> A[]={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-k88l9tzl] [C (gcc)]: https://gcc.gnu.org/ [TIO-k88l9tzl]: https://tio.run/##vVLBDsIgDP2g0gNn42Ff4cF4WBq2GIkmsoPR@OvWzTiEUWAnS3ltCrTNo4Q9EXOzP2wfehSIYNoYKHyW0l7Ae7gMQXyQJoZikaAQhIlQS0/npYTOoO4sLGZg3hAplGj58VLxVnTpb2cspoR/cUkalIkSPVzZhdSGBCmh8Qf@mcSqkSAeBKXzI@Pn@rlhflFn294x3s3NkBtaOjHurELTMJ4vY@A6dEdr3Bs "C (gcc) – Try It Online" Charset: `A[]={+,-1};` Same method as the previous answer, with even more hacking to supply a custom entry point named `A` (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. 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.