Amd Athlon Processor Specific Code; Blended Amd-K6 And Amd Athlon Processor Code - AMD Athlon Processor x86 Optimization Manual

X86 code optimization
Table of Contents

Advertisement

AMD Athlon™ Processor x86 Code Optimization
AMD Athlon™ Processor Specific Code
Blended AMD-K6
58
Example 1 — Signed integer ABS function (X = labs(X)):
MOV
ECX, [X]
MOV
EBX, ECX
NEG
ECX
CMOVS
ECX, EBX
MOV
[X], ECX
Example 2 — Unsigned integer min function (z = x < y ? x : y):
MOV
EAX, [X]
MOV
EBX, [Y]
CMP
EAX, EBX
CMOVNC
EAX, EBX
MOV
[Z], EAX
®
and AMD Athlon™ Processor Code
Example 3 — Signed integer ABS function (X = labs(X)):
MOV
ECX, [X]
MOV
EBX, ECX
SAR
ECX, 31
XOR
EBX, ECX
SUB
EBX, ECX
MOV
[X], EBX
Example 4 — Unsigned integer min function (z = x < y ? x : y):
MOV
EAX, [x]
MOV
EBX, [y]
SUB
EAX, EBX
SBB
ECX, ECX
AND
ECX, EAX
ADD
ECX, EBX
MOV
[z], ECX
Example 5 — Hexadecimal to ASCII conversion
(y=x < 10 ? x + 0x30: x + 0x41):
MOV
AL, [X]
CMP
AL, 10
SBB
AL, 69h
DAS
MOV
[Y],AL
;load value
;save value
;–value
;if –value is negative, select value
;save labs result
;load X value
;load Y value
;EBX<=EAX ? CF=0 : CF=1
;EAX=(EBX<=EAX) ? EBX:EAX
;save min (X,Y)
;load value
;save value
;x < 0 ? 0xffffffff : 0
;x < 0 ? ~x : x
;x < 0 ? (~x)+1 : x
;x < 0 ? -x : x
;load x
;load y
;x < y ? CF : NC ; x - y
;x < y ? 0xffffffff : 0
;x < y ? x - y : 0
;x < y ? x - y + y : y
;x < y ? x : y
;load X value
;if x is less than 10, set carry flag
;0..9 –> 96h, Ah..Fh –> A1h...A6h
;0..9: subtract 66h, Ah..Fh: Sub. 60h
;save conversion in y
Avoid Branches Dependent on Random Data
22007E/0—November 1999

Advertisement

Table of Contents
loading

Table of Contents