Skip to content

Commit

Permalink
asm!: clarify that nomem / readonly can access "private" memory
Browse files Browse the repository at this point in the history
  • Loading branch information
Lukas Markeffsky committed Aug 30, 2024
1 parent c118ff6 commit 0ca4906
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/inline-assembly.md
Original file line number Diff line number Diff line change
Expand Up @@ -505,12 +505,12 @@ r[asm.options.supported-options.pure]
The `pure` option must be combined with either the `nomem` or `readonly` options, otherwise a compile-time error is emitted.

r[asm.options.supported-options.nomem]
- `nomem`: The `asm!` blocks does not read or write to any memory.
- `nomem`: The `asm!` block does not read from or write to any memory accessible outside of the `asm!` block.
This allows the compiler to cache the values of modified global variables in registers across the `asm!` block since it knows that they are not read or written to by the `asm!`.
The compiler also assumes that this `asm!` block does not perform any kind of synchronization with other threads, e.g. via fences.

r[asm.options.supported-options.readonly]
- `readonly`: The `asm!` block does not write to any memory.
- `readonly`: The `asm!` block does not write to any memory accessible outside of the `asm!` block.
This allows the compiler to cache the values of unmodified global variables in registers across the `asm!` block since it knows that they are not written to by the `asm!`.
The compiler also assumes that this `asm!` block does not perform any kind of synchronization with other threads, e.g. via fences.

Expand Down

0 comments on commit 0ca4906

Please sign in to comment.