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