Как распечатать содержимое регистра в сборке x86 на консоль?Я использую Linux - PullRequest
0 голосов
/ 18 апреля 2011

Я знаю, как напечатать строку, но документации по печати целых чисел на удивление мало. Я даже не уверен, что мой вопрос правильный.

Ответы [ 2 ]

1 голос
/ 18 апреля 2011

Если вы можете создать ссылку на библиотеку C, вы можете вызвать функцию printf.В большинстве систем x86 функции с переменным числом * используют соглашение о вызовах cdecl - аргументы помещаются в стек справа налево (поэтому сначала значение регистра, затем строка, содержащая %d), и вам необходимо очистить стек(добавьте к %esp) после вызова.

Для получения более подробной информации, пожалуйста, укажите, в какой системе вы находитесь (и если вы не можете связываться с библиотекой C, вам нужно сгенерировать строку с помощьюрукой, чтобы преобразовать его в любую базу, которую вы хотите напечатать.

0 голосов
/ 18 апреля 2011

Предполагая, что вы используете printf (syscall или int $ 0x80), вам придется поискать спецификацию gcc varargs. Что бы вы хотели сделать, это вставить% i где-нибудь в строке и передать регистр в качестве первого аргумента vararg.

В глубине души я не знаю, как обрабатываются varargs в системных вызовах, но было бы намного проще просто сделать функцию-обертку C для вывода числа и связать его с программой сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...