Здравствуйте! Возникла проблема: Нужно переопределить макросом инструкцию mov. Для чего? Для удобства написания базонезависимого кода. По примеру будет понятно: Код (Text): macro mov arg1,arg2 { if (arg1 eqtype [0]) | (arg2 eqtype [0]) | (arg2 eqtype '') mov arg1,arg2 else if (arg1 eqtype eax) & (arg2 eqtype eax) mov arg1,arg2 else if (arg1 eqtype eax) mov arg1,dword[ebx + arg2 - DELTA] else if (arg2 eqtype eax) mov dword[ebx + arg1 - DELTA],arg2 end if } Проблема вот в чем, пишу: Код (Text): mov eax,eax mov eax,1 mov eax,szTest mov szTest,eax mov eax,dwTest mov dwTest,eax mov dwTest,1 mov eax.[dwTest] mov [dwTest],eax Получаю: Код (Text): MOV EAX, EAX MOV EAX, DWORD PTR DS:[EBX+FFBFEFEF] MOV EAX, DWORD PTR DS:[EBX-12] MOV DWORD PTR DS:[EBX-12], EAX MOV EAX, DWORD PTR DS:[EBX-9] MOV DWORD PTR DS:[EBX-9], EAX MOV DWORD PTR DS:[401009], EAX В общем нихрена не то что надо. Мне нужна полная замена, и что бы там где надо учитывалась дельта. Возможно ли это? Господа подскажите пожалуйста, очень надеюсь.
Прошу прощения, ошибка. Фасм предательски промолчал... Код (Text): mov eax,eax mov eax,1 mov eax,szTest mov szTest,eax mov eax,dwTest mov dwTest,eax mov dwTest,1 mov eax,[dwTest] mov [dwTest],eax Код (Text): MOV EAX, EAX MOV EAX, DWORD PTR DS:[EBX+FFBFEFEF] MOV EAX, DWORD PTR DS:[EBX-12] MOV DWORD PTR DS:[EBX-12], EAX MOV EAX, DWORD PTR DS:[EBX-9] MOV DWORD PTR DS:[EBX-9], EAX MOV EAX, DWORD PTR DS:[401009] MOV DWORD PTR DS:[401009], EAX в первом коде в предпоследней строке была точка вместо запятой...
max7C4, не, нефига.. В общем, утро вечера мудренее: Код (Text): macro mov arg1,arg2 { if (arg1 eqtype DELTA) & ((arg2 eqtype eax) | (arg2 eqtype 0)) mov dword[ebx + arg1 - DELTA],arg2 else if (arg2 eqtype DELTA) & ((arg1 eqtype eax) | (arg1 eqtype 0)) mov arg1, dword[ebx + arg2 - DELTA] else mov arg1, arg2 end if } Не работает только такая: mov eax,1 конструкция. Хотя, вроде же явно указал.. не знаю даже. Ассемблируется MOV EAX, DWORD PTR DS:[EBX+FFBFEFEF] Как бы поправить, подскажите пожалуйста.
_Sl4yer, та а хз что вы не скопипастили? почему бы не писать просто: Код (Text): mov eax, 1 и Код (Text): My_mov eax, szTest
да это не понять наверно, в общем -то типа того вначале было, для учета дельты был отдельный макрос, но вот не устраивает меня так хоть убей \= Вот уж действительно не знаю, возможно ли сделать так как я хочу? Знатоки откликнитесь, а?