db 0x66
allow_pfx66
line
purge pfx66
\}
} allow_pfx66
rep pfx66 nop
это баг или так задумано? после rep нельзя вызывать макросы чтоли?
Имя макроса — это первое слово в строке. Пиши: rep pfx66 nop
Попробуй struc
Тогда rep станет меткой?
Он автоматически метку не создает
А если подумать? . на неё ссылается, метка создаётся.
Если ссылается. То есть если я создаю поля через .fieldname
struc abc {} x abc y = x
struc abc{} x abc x abc ;error: symbol already defined Но struc abc{ match any, .\{\} } x abc x abc ;no errors
А, окей, если . использовать, тогда ок. Я как-то не подумал, что match можно. Я только клеил)
Там вроде не обязательно матч, а можно даже там в макрос передать
офигеть спасибо irps i, 66 67 { macro allow_pfx#i \{ macro pfx\#i line& \\{ db 0x\\#i allow_pfx\\#i line purge pfx\\#i restruc pfx\\#i \\} struc pfx\#i line& \\{ match =., . \\\{ . db 0x\\\#i allow_pfx\\\#i line purge pfx\\\#i restruc pfx\\\#i \\\} \\} \} allow_pfx#i } rep pfx66 fs pfx66 pfx66 repnz pfx66 pfx66 nop работает))
префиксы, у которых нет мнемоник (они и не нужны, т.е. mov ax,cx то же что и pfx66 mov eax,ecx) нужно для дизфессемблера для декодирования нестандартных инструкций чтоб фасм генерировал байты 1к1. конечно можно было через db, но пусть будет. или может сделаю попытку написать виртуалку для х86, без сохранения оригинального кода - на выходе будет новый алгоритм, который даже самомодифицирующийся код распознает.
Обсуждают сегодня