[noob]cdecl

Тема в разделе "WASM.ASSEMBLER", создана пользователем nanoo, 9 авг 2010.

  1. nanoo

    nanoo New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2010
    Сообщения:
    23
    Доброго времени суток!
    На сколько мне известно для С функций используется следующий способ передачи параметров:
    Все параметры заносятся в стек на чиная с последнего, после вызова функции стек должна отчищать вызывающая часть кода.
    Соответсвенно у меня возник такой вопрос: а что с регистрами (a, b, c, d)? Могу ли я надеяться, что ф-ция, которую я вызываю (допустим puts или malloc какой-нибудь) сохранит значения регистров в том виде, в котором они были до запуска.
    "Зеркальный" вопрос: если я пишу ф-цию на асме и собираюсь её вызывать из С, что мне делать с регистрами? Заносить их в стек, а потом востанавливать?
    Смотрел как это делает gcc, но он абсолютно всё делает при помощи стека. А меня интересуют именно регистры.
    Спасибо.
     
  2. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    у агнера фога неплохо и доступно описаны конвенции вызова.
     
  4. nanoo

    nanoo New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2010
    Сообщения:
    23
    Спасибо. По второй ссылке есть ответ на мой вопрос.