diff options
Diffstat (limited to 'Optimizing-assembly-code.md')
| -rw-r--r-- | Optimizing-assembly-code.md | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/Optimizing-assembly-code.md b/Optimizing-assembly-code.md index f545ca4..dbcf2f1 100644 --- a/Optimizing-assembly-code.md +++ b/Optimizing-assembly-code.md @@ -56,6 +56,7 @@ WikiTI's advice fully applies here: - [Inlining](#inlining) - [Fallthrough](#fallthrough) - [Conditional fallthrough](#conditional-fallthrough) + - [Call a function depending on a flag](#call-a-function-depending-on-a-flag) - [Call `rst $38` depending on a flag](#call-rst-38-depending-on-a-flag) - [Jump and lookup tables](#jump-and-lookup-tables) - [Chain comparisons](#chain-comparisons) @@ -1470,6 +1471,27 @@ But do: ``` +### Call a function depending on a flag + +(The example uses `z`, but `nz`, `c`, or `nc` would also work.) + +Don't do: + +```asm + ; 5 bytes, 3 or 9 cycles + jr nz, .skip + call Foo +.skip +``` + +But do: + +```asm + ; 3 bytes, 6 or 3 cycles + call z, Foo +``` + + ### Call `rst $38` depending on a flag (The example uses `z`, but `nz`, `c`, or `nc` would also work.) |
