7.3. Оператор IN
Бывают случаи, когда в условии присутствует слишком много EQ:
macro mov a,b
{
if (a eq cs) | (a eq ds) | (a eq es) | (a eq fs) |
(a eq gs) | (a eq ss)
push b
pop a
else
mov a, b
end if
}
Вместо применения множества логических операторов ИЛИ — |, можно использовать специальный оператор IN. Он проверяет, присутствует ли идентификатор слева, в списке идентификаторов справа. Список должен быть заключён в скобочки < и >, а идентификаторы в нём разделяются запятыми,
macro mov a,b
{
if a in <cs,ds,es,fs,gs,ss>
push b
pop a
else
mov a, b
end if
}
Это так же работает для нескольких идентификаторов (как и EQ):
if dword [eax] in <[eax], dword [eax], ptr eax, dword ptr eax>