Вызовите функцию C от блока — замораживания приложения в “вызове printf”, и я понятия не имею почему

Как в стороне: первая модификация, которую я сделал бы, должна использовать Класс StringBuilder вместо просто Строки - это сохранит ресурсы для Вас.

6
задан Robert Harvey 30 September 2013 в 16:13
поделиться

2 ответа

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

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

Также вам следует изучить gdb (отладчик GNU) похоже, что вы кодируете GAS, поэтому, если вы работаете в системе GNU / Linux, попробуйте:

gdb youprogram

, а затем запустите его, чтобы увидеть, где он не работает.

4
ответ дан 17 December 2019 в 00:11
поделиться

Обратите также внимание, что в C / C ++ вам нужно вытащить регистры самостоятельно (в Pascal вызовите преобразование, процедура выдает, например, "ret 8").

1
ответ дан 17 December 2019 в 00:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: