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;
}

Как решить проблему можно ?
  • Вопрос задан
  • 2056 просмотров
Пригласить эксперта
Ответы на вопрос 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, нужно передать соответствующий ключ компилятору.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы