add eax 1



Add eax 1

Автор Артём Василенко задал вопрос в разделе Другие языки и технологии

помогите с ассемблерной вставкой С++ и получил лучший ответ

Ответ от Cyborg Terminator[гуру]
const char* fmt = "%d
";
__asm {
mov eax, 2012
push eax
push fmt
call printf
add esp, 8
};

Ответ от ...[гуру]
Во-первых зачем? Хотите привязать без надобности код к конкретной платформе? Думаете сложение add eax,1 и cmp быстрее чем оператор инкремента и сравнения в C++? Не думаю что это так. Тем более инкремент на 1 он сделает не как Вы через add eax,1 а более быстрый и короткий чем у Вас - inc eax (если это процессоры x86). Компилятор писали совсем не дураки. Я пока не вижу смысла в такой ассемблеровской вставки. К ускорению вычислений это не приведет, а проблемы с переносимостью создаст.
По существу - обычно результат записывают обратно в переменную и пользуются вызовами через тот-же cout. Т. к. cout на разных платформах вызывает разные уже "нативные" функции вывода.
Конечно, если Вы хотите ещё больше привязаться к платформе - можете использовать преобразование числа в строку и/или использовать WinAPI вызовы из ассемберовских вставок. (если это винда) , но тогда возникает вопрос - а почему не сразу на ассемблере?
А пример выше - ну где-то может и сработает, а где-то 100% не сработает.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: помогите с ассемблерной вставкой С++
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*