Я получил рабочую программу, скомпилированную с помощью gcc 3.44, но когда я снова скомпилировал ее, используя 4.44, что-то не так. Кажется, что некоторые локальные переменные в функции изменены неизвестными, так что цикл for не завершится, потому что переменная в своем состоянии постоянно меняется на 0, даже если она увеличивается. Вызов функции из цикла кажется нормальным, потому что она вернулась к правильному адресу. Я попытался отследить значение переменной, на которую влияет цикл, я обнаружил, что значение изменяется после вызова функции печати из ветви if, удаление или добавление дополнительных вызовов print решает ее, но я думаю, что это не имеет никакого отношения функция печати, и нет кода, который изменяет эту переменную, кроме только приращения в цикле. Я также попытался отследить ESP в начале и в конце цикла, это то же самое. Что могло вызвать проблему?