Skip to content

Commit

Permalink
Merge pull request #1598 from lukas-code/asm-mem
Browse files Browse the repository at this point in the history
`asm!`: clarify that `nomem` / `readonly` can access private memory
  • Loading branch information
traviscross authored Sep 3, 2024
2 parents e7345c9 + 0ca4906 commit 687faf9
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 687faf9

Please sign in to comment.