AA55 0 7 февраля, 2019 Опубликовано 7 февраля, 2019 · Жалоба Уважаемое сообщество, помогите пожалуйста. Тема: передача параметров в подпрограмму на ассемблере. Головная программа z2c.c вызывает подпрограмму z2a.asm, которая копирует строку из второго аргумента в 1-й. Пока аргументов было 3, всё работало. После добавления 4-го, программа валится см. z2.log. Если закоментировать в подпрограмме (z2a_.asm:17) извлечение 4-го аргумента - подпрограмма исполняется. Куда смотреть и где копать? Makefile Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GeorgK 1 8 февраля, 2019 Опубликовано 8 февраля, 2019 (изменено) · Жалоба Самое первое, что приходит в голову: дизассемблировать такой вызов сишной подпрограммы и посмотреть, как это делает компилятор. И ещё: там точно не надо сохранять изменённые регистры? Изменено 8 февраля, 2019 пользователем GeorgK Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 8 февраля, 2019 Опубликовано 8 февраля, 2019 · Жалоба Смотреть, конечно же, в документацию. Начать можно с https://en.wikipedia.org/wiki/X86_calling_conventions Особое внимание обратить на то, что там нигде не написано "вы можете свободно портить ebx". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AA55 0 8 февраля, 2019 Опубликовано 8 февраля, 2019 · Жалоба 51 minutes ago, esaulenka said: Смотреть, конечно же, в документацию. Начать можно с https://en.wikipedia.org/wiki/X86_calling_conventions Особое внимание обратить на то, что там нигде не написано "вы можете свободно портить ebx". Спасибо, заработало! Проблема, действительно, была в "порче" ebx. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться