Change bold code snippets to inline code blocks
This commit is contained in:
parent
f658bfbb40
commit
3c76d884ef
185 changed files with 1772 additions and 1772 deletions
16
16-04.md
16
16-04.md
|
|
@ -47,18 +47,18 @@ CMP DH,[EBX+EAX]
|
|||
Harmless enough, save for two things. First, EBX happened to be zero at
|
||||
this point (a leftover from an earlier version of the code, as it turned
|
||||
out), so it was superfluous as a memory-addressing component; this made
|
||||
it possible to use base-only addressing (**[EAX]**) rather than
|
||||
base+index addressing (**[EBX+EAX]**), which saves a cycle on the 386.
|
||||
Second: Changing the instruction to **CMP [EAX],DH** saved 2 cycles—just
|
||||
it possible to use base-only addressing (`[EAX]`) rather than
|
||||
base+index addressing (`[EBX+EAX]`), which saves a cycle on the 386.
|
||||
Second: Changing the instruction to `CMP [EAX],DH` saved 2 cycles—just
|
||||
enough, by good fortune, to speed up the whole program by 5 percent.
|
||||
|
||||
> 
|
||||
> **CMP reg,[mem]** takes 6 cycles on the 386, but **CMP [ mem ],reg**
|
||||
> takes only 5 cycles; you should always perform**CMP** with the memory
|
||||
> `CMP reg,[mem]` takes 6 cycles on the 386, but `CMP [ mem ],reg`
|
||||
> takes only 5 cycles; you should always perform`CMP` with the memory
|
||||
> operand on the left on the 386.
|
||||
|
||||
(Granted, **CMP [*mem*],*reg*** is 1 cycle slower than **CMP
|
||||
*reg*,[*mem*]** on the 286, and they're both the same on the 8088; in
|
||||
(Granted, `CMP [*mem*],*reg*` is 1 cycle slower than `CMP
|
||||
*reg*,[*mem*]` on the 286, and they're both the same on the 8088; in
|
||||
this case, though, the code was specific to the 386. In case you're
|
||||
curious, both forms take 2 cycles on the 486; quite a lot faster, eh?)
|
||||
|
||||
|
|
@ -69,7 +69,7 @@ no longer be valid from the 8088/286 world into the wonderful new world
|
|||
of 386 native-mode programming. The second lesson is that after you've
|
||||
slaved over your code for a while, you're in no shape to see its flaws,
|
||||
or to be able to get the new perspectives needed to speed it up. I'll
|
||||
bet Terje looked at that **[EBX+EAX]** addressing a hundred times while
|
||||
bet Terje looked at that `[EBX+EAX]` addressing a hundred times while
|
||||
trying to speed up his code, but he didn't really see what it did;
|
||||
instead, he saw what it was supposed to do. Mental shortcuts like this
|
||||
are what enable us to deal with the complexities of assembly language
|
||||
|
|
|
|||
Loading…
Reference in a new issue