Use backtick code blocks for syntax highlighting
This commit is contained in:
parent
8ed9dea394
commit
f658bfbb40
203 changed files with 26546 additions and 25801 deletions
22
21-01.md
22
21-01.md
|
|
@ -65,7 +65,9 @@ areas of AGIs and register dependencies.
|
|||
AGIs are *Address Generation Interlocks*, a fancy way of saying that if
|
||||
a register is used to address memory, as is EBX in this instruction
|
||||
|
||||
mov [ebx],eax
|
||||
```nasm
|
||||
mov [ebx],eax
|
||||
```
|
||||
|
||||
and the value of the register is not set far enough ahead for the
|
||||
Pentium to perform the addressing calculations before the instruction
|
||||
|
|
@ -101,14 +103,16 @@ As an example of a sort of AGI that's new to the Pentium, consider the
|
|||
following test for a NULL pointer, followed by the use of the pointer if
|
||||
it's not NULL:
|
||||
|
||||
push ebx ;U-pipe cycle 1
|
||||
mov ebx,[Ptr] ;V-pipe cycle 1
|
||||
and ebx,ebx ;U-pipe cycle 2
|
||||
jz short IsNull ;V-pipe cycle 2
|
||||
mov eax,[ebx] ;U-pipe cycle 3 AGI stall
|
||||
mov edx,[ebp-8] ;V-pipe cycle 3 lockstep idle
|
||||
;U-pipe cycle 4 mov eax,[ebx]
|
||||
;V-pipe cycle 4 mov edx,[ebp-8]
|
||||
```nasm
|
||||
push ebx ;U-pipe cycle 1
|
||||
mov ebx,[Ptr] ;V-pipe cycle 1
|
||||
and ebx,ebx ;U-pipe cycle 2
|
||||
jz short IsNull ;V-pipe cycle 2
|
||||
mov eax,[ebx] ;U-pipe cycle 3 AGI stall
|
||||
mov edx,[ebp-8] ;V-pipe cycle 3 lockstep idle
|
||||
;U-pipe cycle 4 mov eax,[ebx]
|
||||
;V-pipe cycle 4 mov edx,[ebp-8]
|
||||
```
|
||||
|
||||
This commonplace code loses a U-pipe cycle to the AGI caused by **AND
|
||||
EBX,EBX**, followed by the attempt two instructions later to use EBX to
|
||||
|
|
|
|||
Loading…
Reference in a new issue