docs(asm): checkpoint x86_64 syscall-write example (1651)
This commit is contained in:
@@ -197,11 +197,12 @@ rule all work and execute on the host JIT. Global `asm { … }` (Phase F) works
|
|||||||
via lib-less `extern`). `-> @place` **write-through** outputs work (Phase 2) and
|
via lib-less `extern`). `-> @place` **write-through** outputs work (Phase 2) and
|
||||||
**read-write (`+`)** place outputs work (Phase G — tied-input lowering, runs on
|
**read-write (`+`)** place outputs work (Phase G — tied-input lowering, runs on
|
||||||
aarch64). Indirect-memory (`*`) place outputs are still rejected loudly as
|
aarch64). Indirect-memory (`*`) place outputs are still rejected loudly as
|
||||||
not-yet-implemented — the only remaining substantive feature. Smaller
|
not-yet-implemented — the only remaining substantive feature. The x86_64
|
||||||
follow-ups: the comptime-call guard for global asm (`#run` into a module-asm
|
syscall-write ir-only example is DONE (1651). Smaller follow-ups: the
|
||||||
symbol should fail loud via dlsym-miss — pin a test), a JIT-vs-global-asm note
|
comptime-call guard for global asm (`#run` into a module-asm symbol should fail
|
||||||
(`sx run` silently mishandles module-asm symbols; AOT is correct), and the x86_64
|
loud via dlsym-miss — pin a test) and a JIT-vs-global-asm note (`sx run` silently
|
||||||
syscall ir-only example. `readme.md` now has an "Inline Assembly" section.
|
mishandles module-asm symbols; AOT is correct). `readme.md` now has an "Inline
|
||||||
|
Assembly" section.
|
||||||
|
|
||||||
Known orthogonal bug: **issue 0137** — `sx run` on a program with no `main`
|
Known orthogonal bug: **issue 0137** — `sx run` on a program with no `main`
|
||||||
segfaults (`src/target.zig:256-273`, unguarded JIT entry lookup). Pre-existing,
|
segfaults (`src/target.zig:256-273`, unguarded JIT entry lookup). Pre-existing,
|
||||||
@@ -224,10 +225,14 @@ needed. Regression: `examples/1177-diagnostics-addr-of-const-rejected.sx`.
|
|||||||
|
|
||||||
Remaining work, all optional / additive:
|
Remaining work, all optional / additive:
|
||||||
- **Indirect-memory (`"=*m"`) outputs**: pass the place address as an arg, asm
|
- **Indirect-memory (`"=*m"`) outputs**: pass the place address as an arg, asm
|
||||||
writes through it (no return slot). Currently rejected.
|
writes through it (no return slot). Currently rejected. The last substantive
|
||||||
- **Output-to-`const` rejection** for `-> @place` (the place must be mutable).
|
feature; needs `elementtype` type-attribute plumbing on the indirect arg
|
||||||
|
(precedent: `sret` in `emit_llvm.zig`/`ops.zig`).
|
||||||
- **Polish**: comptime-call guard test for global asm; make `sx run` error (not
|
- **Polish**: comptime-call guard test for global asm; make `sx run` error (not
|
||||||
silently mishandle) a module-asm symbol; x86_64 syscall-write ir-only example.
|
silently mishandle) a module-asm symbol.
|
||||||
|
|
||||||
|
Done since last: output-to-`const` rejection (issue 0138), x86_64 syscall-write
|
||||||
|
ir-only example (1651).
|
||||||
|
|
||||||
Orthogonal: **issue 0137** (no-`main` segfault).
|
Orthogonal: **issue 0137** (no-`main` segfault).
|
||||||
|
|
||||||
@@ -294,6 +299,12 @@ Orthogonal: **issue 0137** (no-`main` segfault).
|
|||||||
keep storage. asm `-> @const` gets the clean diagnostic for free (same path).
|
keep storage. asm `-> @const` gets the clean diagnostic for free (same path).
|
||||||
Regression `examples/1177-diagnostics-addr-of-const-rejected.sx`. Issue 0138
|
Regression `examples/1177-diagnostics-addr-of-const-rejected.sx`. Issue 0138
|
||||||
RESOLVED. `zig build test` green (659 corpus, 446 unit).
|
RESOLVED. `zig build test` green (659 corpus, 446 unit).
|
||||||
|
- (x86 syscall) x86_64 Linux `write(2)` via raw `syscall` — locks the constraint
|
||||||
|
string `={rax},{rax},{rdi},{rsi},{rdx},~{rcx},~{r11},~{memory}` (register-pinned
|
||||||
|
inputs + pinned value output + pointer input + clobbers). ir-only on aarch64
|
||||||
|
(`.ir` asserted), runs on x86_64-linux (hand-authored `"ok\n"` stdout).
|
||||||
|
`examples/1651-platform-asm-x86-syscall-write.sx`. Pure additive lock, no
|
||||||
|
compiler change. `zig build test` green (660 corpus, 446 unit).
|
||||||
|
|
||||||
## Known issues
|
## Known issues
|
||||||
- **0138** — RESOLVED. `@const` (address-of a `::` comptime constant) yielded a
|
- **0138** — RESOLVED. `@const` (address-of a `::` comptime constant) yielded a
|
||||||
|
|||||||
Reference in New Issue
Block a user