Задать вопрос
sham63
@sham63

Как решить проблему со вставкой asm в с++ code blocks?

Пытаюсь собрать программу в Code Blocks (17.12) , выдает ошибку error: '_asm' was not declared in this scope
Сам код программы
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(0,"RUS");
 
    char b[] = {"abcdef"};
_asm
{
mov ecx,6
lea edx,b[0]
oncemore:
add [edx],3
add edx,1
loop oncemore
}
 
cout<<b<<endl;
 
 
    system("pause");
    return 0;
}

Как решить проблему можно ?
  • Вопрос задан
  • 2306 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик на C++: Профессия + специализация + нейросети
    12 месяцев
    Далее
  • Skillbox
    Разработчик на C++
    7 месяцев
    Далее
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
Punk_Joker
@Punk_Joker
Software Engineer в ВО Овен
asm а не _asm
_asm вроде как в VS, а тут GCC
Ответ написан
@MiiNiPaa
Корректный синтаксис:
asm( // Внимание на скобку!
   "Строка, содержащая твой код"
);

Чтобы не мучатся с экранированием символов, начиная с С++11 можно использовать raw literals:

asm(R"(
mov ecx,6
lea edx,b[0]
oncemore:
add [edx],3
add edx,1
loop oncemore
)");


Ах, да, забыл упомянуть: по умолчанию GCCC использует AT&T ассемблер. Чтобы переключить его на синтаксис Intel, нужно передать соответствующий ключ компилятору.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
Сбер Москва
от 200 000 до 350 000 ₽
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
HuntTech Москва
от 200 000 до 250 000 ₽