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
14
58-03.md
14
58-03.md
|
|
@ -73,11 +73,11 @@ MOV AH,[BX] ;cycle 1 U-pipe
|
|||
MOV [DI],AH ;cycle 2 U-pipe
|
||||
```
|
||||
|
||||
The second **MOV**, being dependent on the value loaded into AH by the
|
||||
first **MOV**, can't execute until the first **MOV** is finished, so the
|
||||
The second `MOV`, being dependent on the value loaded into AH by the
|
||||
first `MOV`, can't execute until the first `MOV` is finished, so the
|
||||
Pentium's second pipe, the V-pipe, lies idle for a cycle. We can reclaim
|
||||
that cycle simply by shuffling another instruction between the two
|
||||
**MOV**s.
|
||||
`MOV`s.
|
||||
|
||||
Advancing the destination pointer is easy to speed up: Just build the
|
||||
offset from one scanline to the next into each pixel-drawing instruction
|
||||
|
|
@ -108,8 +108,8 @@ pointer.*](images/58-04.jpg)
|
|||
First, we can sum the X and Y integer advance amounts outside the loop,
|
||||
then add them both to the source pointer with a single instruction.
|
||||
Second, we can recognize that X advances exactly one extra byte when its
|
||||
fractional part carries, and use **ADC** to account for X carries, as
|
||||
shown in Figure 58.5. That single **ADC** can add in not only any X
|
||||
fractional part carries, and use `ADC` to account for X carries, as
|
||||
shown in Figure 58.5. That single `ADC` can add in not only any X
|
||||
carry, but both the X and Y integer advance amounts as well, thereby
|
||||
eliminating a good chunk of the source-advance code in Listing 58.2.
|
||||
Furthermore, we should somehow be able to use 32-bit registers and
|
||||
|
|
@ -128,8 +128,8 @@ with bit 15 of EDX always kept at zero; this allows bit 15 to store the
|
|||
carry status from each Y advance. We can similarly store the fractional
|
||||
X and Y advance amounts in ECX, and can store the sum of the integer
|
||||
parts of the X and Y advance amounts in BP. With this arrangement, the
|
||||
single instruction **ADD EDX,ECX** advances the fractional parts of both
|
||||
X and Y, and the following instruction **ADC SI,BP** finishes advancing
|
||||
single instruction `ADD EDX,ECX` advances the fractional parts of both
|
||||
X and Y, and the following instruction `ADC SI,BP` finishes advancing
|
||||
the source pointer in X. That's a mere 3 cycles, and all that remains is
|
||||
to finish advancing the source pointer in Y.
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue