@zzzmaikzzz
Junior-web

Assembler'ные вставки кода в C++, как правильно реализовать ?

Как правильно вставлять ассемблерные вставки в тело на C++, есть ли какие-то правила при написании в ОО-стиле ?
И собственно, какой аналог push/pop есть в C++ ?
  • Вопрос задан
  • 33317 просмотров
Пригласить эксперта
Ответы на вопрос 2
Если вы работаете в Visual Studio, то тут все просто:

int main()
{
  short a=0;
  __asm
  {
  mov ax, a
  inc ax
  mov a, ax
  }
  cout<<a;  //1
}


аналог push/pop

В библиотеке stl есть уже готовый класс stack.

P.S. Также можно писать ассемблерный код в отдельном *.asm, а потом его прилинковать к проекту.
Ответ написан
tsarevfs
@tsarevfs Куратор тега C++
C++ developer
1 правило ассемблерных вставок - "лучше бы вы не делали ассемблерные вставки".
Вы уверены что оно вам нужно? Например работа с SSE вполне возможна с помощью библиотек C++.
Некоторым аналогом push pop можно считать функцию _allcoa выделяющую память на стеке. Работать с объектами через ассемблер конечно возможно. Читайте про call conventions, name mangling, выравнивание. Если вы хотите работать с объектами использующими наследование и виртуальные функции, то вам нужно разобраться со структурой таблици виртуальных функций.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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