Как вообще можно передать параметр в функцию? в исходниках рылся, так и не нашел ни однго вызова процедуры с параметрами, не ну может оно как то по особенному вызывается что я не понял что это был вызов с параметрами
MyFunction: enter 0,0 mov eax, [ebp+8] add eax, 400 leave ret start: push 175 call MyFunction ; теперь в EAX лежит 175 плюс 400, то есть 575
RuAsm команды для создания и уничтожения кадра стека. читай книжку по асму enter 0, 0 = push ebp / mov ebp, esp enter X, 0 = push ebp / mov ebp, esp / sub esp, X leave = mov esp, ebp / pop ebp
RuAsm enter выполняется дольше, чем все 2 или 3 команды push ebp + mov ebp,esp + [sub esp,n]. Поэтому даже самые тупые компиляторы не используют enter в качестве пролога. Зато leave - нормальная в плане быстродействия инструкция и занимает всего 1 байт.
хм, ну да, не RET, а RET 4 там надо, если хотим stdcall, или cinvoke или invoke / add esp, 4 если хотим cdecl
А в регистрах тоже можно передать параметр! Код (Text): mov edx, parameter call foo ... foo: ; use EDX here ret