diff options
author | Rangi <remy.oukaour+rangi42@gmail.com> | 2021-03-24 18:33:31 -0400 |
---|---|---|
committer | Rangi <remy.oukaour+rangi42@gmail.com> | 2021-03-24 18:33:31 -0400 |
commit | b4c308cfc65a96699221cdce2cdb4ef2a0391f1c (patch) | |
tree | 8925ab87e5a6dfe5aa56972784e0d647f8b4b856 | |
parent | 5310fbed099a45fffda636d8bb83732a248c6637 (diff) |
Variants
-rw-r--r-- | Optimizing-assembly-code.md | 48 |
1 files changed, 32 insertions, 16 deletions
diff --git a/Optimizing-assembly-code.md b/Optimizing-assembly-code.md index 1f1a46b..7aed42f 100644 --- a/Optimizing-assembly-code.md +++ b/Optimizing-assembly-code.md @@ -741,6 +741,22 @@ Don't do: ld b, a ``` +And don't do: + +```asm + ; 4 bytes, 4 cycles + ld a, 0 + adc b + ld b, a +``` + +```asm + ; 4 bytes, 4 cycles + ld a, 0 + sbc b + ld b, a +``` + But do: ```asm @@ -1089,21 +1105,21 @@ Don't do: ```asm ; 8 bytes, 8 cycles - ld a, l - adc 0 + ld a, l ; nor ld a, 0 + adc 0 ; nor adc l ld l, a - ld a, h - adc 0 + ld a, h ; nor ld a, 0 + adc 0 ; nor adc h ld h, a ``` ```asm ; 8 bytes, 8 cycles - ld a, l - sbc 0 + ld a, l ; nor ld a, 0 + sbc 0 ; nor sbc l ld l, a - ld a, h - sbc 0 + ld a, h ; nor ld a, 0 + sbc 0 ; nor sbc h ld h, a ``` @@ -1111,8 +1127,8 @@ And don't do: ```asm ; 7 bytes, 7 cycles - ld a, l - adc 0 + ld a, l ; nor ld a, 0 + adc 0 ; nor adc l ld l, a adc h sub l @@ -1121,8 +1137,8 @@ And don't do: ```asm ; 7 bytes, 7 cycles - ld a, l - sbc 0 + ld a, l ; nor ld a, 0 + sbc 0 ; nor sbc l ld l, a sbc h add l @@ -1135,8 +1151,8 @@ And don't do: ```asm ; 7 bytes, 7 or 8 cycles - ld a, l - adc 0 + ld a, l ; nor ld a, 0 + adc 0 ; nor adc l ld l, a jr nc, .no_carry inc h @@ -1145,8 +1161,8 @@ And don't do: ```asm ; 7 bytes, 7 or 8 cycles - ld a, l - sbc 0 + ld a, l ; nor ld a, 0 + sbc 0 ; nor sbc l ld l, a jr nc, .no_carry dec h |