Перейти к содержанию
    

Linux64: C:32+nasm:32 параметры

Уважаемое сообщество, помогите пожалуйста.

Тема: передача параметров в подпрограмму на ассемблере.

Головная программа z2c.c вызывает подпрограмму z2a.asm, которая копирует строку из второго аргумента в 1-й. Пока аргументов было 3, всё работало. После добавления 4-го, программа валится см. z2.log.

Если закоментировать в подпрограмме (z2a_.asm:17) извлечение 4-го аргумента - подпрограмма исполняется.

Куда смотреть и где копать?

Makefile

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Самое первое, что приходит в голову: дизассемблировать такой вызов сишной подпрограммы и посмотреть, как это делает компилятор.

И ещё: там точно не надо сохранять изменённые регистры?

Изменено пользователем GeorgK

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Смотреть, конечно же, в документацию.

Начать можно с https://en.wikipedia.org/wiki/X86_calling_conventions

Особое внимание обратить на то, что там нигде не написано "вы можете свободно портить ebx".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

51 minutes ago, esaulenka said:

Смотреть, конечно же, в документацию.

Начать можно с https://en.wikipedia.org/wiki/X86_calling_conventions

Особое внимание обратить на то, что там нигде не написано "вы можете свободно портить ebx".

Спасибо, заработало! Проблема, действительно, была в "порче" ebx.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...