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 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: помогите с ассемблерной вставкой С++
спросили в Подсчет
ЕГе система подсчета,как считаю баллы?
После того, как все сдали экзамен и получили первичные баллы составляется специальная шкала
подробнее...
спросили в Dirt 4 Randomness
Assembler
Вопрос 1
Вот макрос, генерирующий случайные числа от 0 до n-1. Алгоритм взят из модуля System
подробнее...
спросили в Байт код
Помогите ответить на вопрос. Языки программирования. Программы. Виды трансляторов
Поконкретнее бы вопрос.
Компьютер понимает только двоичные коды. Нолики и единицы. И все!
подробнее...
спросили в Железо 1181 год
Нужна программа форматирования IDE-винта на низком уровне. Кто может - помогите.
Программа называется LLFsetup.2.36.1181.exe, я ее нашел в сети совершенно
подробнее...
спросили в Ассемблер
Написать простую программу на ассемблере
простых программ на ассемблере не бывает
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:
спросили в User msk 4 User nd
как создать свой сервер World of warcraft?
Если для себя и парочки друзей-то ищи в инете готовые сервера вов с описанием, если же ты хочеш на
подробнее...
спросили в Железо Dove
модернизация компьютора. можно модернизировать компьютер Depo Ego 8510 MN ???
Компьютер Depo Ego 8510 MN - описание

Технические характеристики:

Производитель:
подробнее...
спросили в Exe EXO
Выходит синий экран смерти, через программу я узнал что проблемой ялвляется файл ntkrnlpa.exe,что делать ?
Что такое ntkrnlpa.exe?

ntkrnlpa.exe является DLL-файл, который отвечает за компонент NT
подробнее...
спросили в Apache
Можно ли сделать exe файл на java?
Можно, но не нужно. Для большинства задач это абсолютно лишнее.

Вот ряд случаев, где без
подробнее...

Всем привет, ПоМоГиТе ДрАйВеР НаЙтИ ati radeon xpress 200 series для виндовс 7 32 бит
ЕСЛИ ВЫ НЕ ЗНАЕТЕ ГДЕ СКАЧАТЬ ДРАЙВЕРА НА ВАШ КОМПЬЮТЕР ИЛИ НОУТБУК!!!
1.для начала откройте
подробнее...

Как загрузить одиночную игру в Counter-Strike 1.6?
В ней есть режим игры с ботами нажимаеш "Н" и выбираеш добавить ботов, можно сразу 7х8, будет куча
подробнее...

Драйвера для ATI Radeon x1200/1250 Windows 8.1
xD.... mmm
(228)
Я выбирал пользовательскую установку. Выбрал быструю,
подробнее...
спросили в Гриды
ааааа!!!!Помогите! Проект Project1.exe...
Исходник в студию, без этого ни одного нормального ответа не
подробнее...

как создать свой zm сервер для cs 1.6
1. Первым делом для создания сервера CS 1.6 нам нужна сама игра - "Counter-Strike 1.6". Если Вы не
подробнее...

Как в cs 1.6 создать свой сервер ???Напишите по пунктам чтоб было понятно !
1. Первым делом для создания сервера CS 1.6 нам нужна сама игра Counter-Strike 1.6. Если Вы не
подробнее...
 

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

Имя*

E-mail:*

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