В macros.inc есть макросы cmovz/cmovnz/cmovg/cmovl, которые "эмулируют" одноименные ассемблерные инструкции на процессорах, которые эти инструкции не поддерживают. Вот, собственно, код:
Spoiler:
Code: Select all
if __CPU_type eq p5 ; CMOVcc isnt supported on the P5
cmove fix cmovz
macro cmovz reg1, reg2 {
local .jumpaddr
jnz .jumpaddr
mov reg1, reg2
.jumpaddr:
}
cmovne fix cmovnz
macro cmovnz reg1, reg2 {
local .jumpaddr
jz .jumpaddr
mov reg1, reg2
.jumpaddr:
}
macro cmovg reg1, reg2 {
local .jumpaddr
jle .jumpaddr
mov reg1, reg2
.jumpaddr:
}
macro cmovl reg1, reg2 {
local .jumpaddr
jge .jumpaddr
mov reg1, reg2
.jumpaddr:
}
end if
Следует заменить if/end if на инструкцию условного препроцессинга match, или же вставить if/end if в тело каждого макроса.