summaryrefslogtreecommitdiff
path: root/Optimizing-assembly-code.md
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2021-03-24 18:33:31 -0400
committerRangi <remy.oukaour+rangi42@gmail.com>2021-03-24 18:33:31 -0400
commitb4c308cfc65a96699221cdce2cdb4ef2a0391f1c (patch)
tree8925ab87e5a6dfe5aa56972784e0d647f8b4b856 /Optimizing-assembly-code.md
parent5310fbed099a45fffda636d8bb83732a248c6637 (diff)
Variants
Diffstat (limited to 'Optimizing-assembly-code.md')
-rw-r--r--Optimizing-assembly-code.md48
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