mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
Add additional memory operators per request (NW) (#3067)
* Add additional memory operators per request and further cleanups to expressions (NW) * Requested adjustments to expressions. (NW)
This commit is contained in:
parent
8420d338a7
commit
88c8b5b0c7
@ -30,15 +30,19 @@ Differences from C Behaviors
|
||||
----------------------------
|
||||
|
||||
|
||||
- First, all math is performed on full 64-bit unsigned values, so things like a < 0 won't work as expected.
|
||||
- First, all math is performed on full 64-bit unsigned values, so things like **a < 0** won't work as expected.
|
||||
|
||||
- Second, the logical operators && and || do not have short-circuit properties -- both halves are always evaluated.
|
||||
- Second, the logical operators **&&** and **||** do not have short-circuit properties -- both halves are always evaluated.
|
||||
|
||||
- Finally, the new memory operators work like this:
|
||||
|
||||
- b@<addr> refers to the byte read from <addr>.
|
||||
- **b!<addr>** refers to the byte at <addr> but does *NOT* suppress side effects such as reading a mailbox clearing the pending flag, or reading a FIFO removing an item.
|
||||
|
||||
- Similarly, w@ refers to a word in memory, d@ refers to a dword in memory, and q@ refers to a qword in memory.
|
||||
|
||||
The memory operators can be used as both lvalues and rvalues, so you can write b\@100 = ff to store a byte in memory. By default these operators read from the program memory space, but you can override that by prefixing them with a 'd' or an 'i'. So dw\@300 refers to data memory word at address 300 and id\@400 refers to an I/O memory dword at address 400.
|
||||
- **b@<addr>** refers to the byte at <addr> while suppressing side effects.
|
||||
|
||||
- Similarly, **w@** and **w!** refer to a *word* in memory, **d@** and **d!** refer to a *dword* in memory, and **q@** and **q!** refer to a *qword* in memory.
|
||||
|
||||
The memory operators can be used as both lvalues and rvalues, so you can write b\@100 = ff to store a byte in memory. By default these operators read from the program memory space, but you can override that by prefixing them with a 'd' or an 'i'.
|
||||
|
||||
As such, **dw\@300** refers to data memory word at address 300 and **id\@400** refers to an I/O memory dword at address 400.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user