Стандарт передачи параметров в процедуры и функции

Assembler programming questions
  • Стандартизация нужна только при передаче параметров из одного модуля в другой, "модуль" в широком смысле слова - библиотека KDL/COFF, кодер/декодер/движок/плагин для какой-нибудь программы и т.п. Внутри одной программы (особенно на ассемблере) параметры надо передавать как удобно в зависимости от текущей реализации.
    Стиль вызова STDCALL удобен хотя бы уже тем, что его поддерживают все компиляторы ЯВУ (ну по крайней мере все, поддерживающие связь с внешним миром на стадии компиляции).
    Ушёл к умным, знающим и культурным людям.
  • FASM поддерживает stdcall достаточно включить файл proc32.inc. Как пример

    Code: Select all

    proc my_proc stdcall, param_1:dword, param_2:dword
       locals
          var_1  dd ?
          var_2  dd ?
       endl
    
          mov eax, [param_1]
          add eax, [param_2]
          mov [val_1], eax
          и т.д
          ret
    endp       
    
    вызов функции stdcall my_proc, [val_1], [val_2]
    FASM сам сгенерирует код пролога и эпилога в функции my_proc. Никиких проблем использования файла proc32.inc и макросов proc и stdcall с нынешним кодом ядра нет.
  • diamond
    Не обязательно, ведь кто-то может использовать часть моего исходника для своих разработок и единый стандарт вызова процедур просто облегчить его задачу.
    Serge
    Спасибо за информацию.
  • Who is online

    Users browsing this forum: No registered users and 3 guests