Доброго времени суток! На сколько мне известно для С функций используется следующий способ передачи параметров: Все параметры заносятся в стек на чиная с последнего, после вызова функции стек должна отчищать вызывающая часть кода. Соответсвенно у меня возник такой вопрос: а что с регистрами (a, b, c, d)? Могу ли я надеяться, что ф-ция, которую я вызываю (допустим puts или malloc какой-нибудь) сохранит значения регистров в том виде, в котором они были до запуска. "Зеркальный" вопрос: если я пишу ф-цию на асме и собираюсь её вызывать из С, что мне делать с регистрами? Заносить их в стек, а потом востанавливать? Смотрел как это делает gcc, но он абсолютно всё делает при помощи стека. А меня интересуют именно регистры. Спасибо.
В Windows принято сохранять ESI, EDI, EBX. EBP используется адресации стекового фрейма, EAX - для результата. На всякий случай: http://www.unixwiz.net/techtips/win32-callconv.html http://www.unixwiz.net/techtips/win32-callconv-asm.html