Dinoguy1000
Dinoguy1000

Reputation: 55

Intel-style inline assembly in gcc

I am trying to compile an old C++ software project in Code::Blocks using the gcc compiler, and after fixing a few other issues, I've hit a wall: the project has a file with Intel-style inline ASM written as

_asm {
  code here
}

and the compiler refuses to compile it with "error: '_asm' was not declared in this scope".

I've spent a while Googling around looking for solutions, but the only ones I can find are to add -masm=intel to the build options (which I've tried and can't get to work), or to convert the code to asm ("code here"); (which isn't feasible because of the sheer amount of ASM). Does anyone know how I can get gcc to compile this code as-is, or should I give up and use a different compiler?

Upvotes: 5

Views: 2867

Answers (2)

TonyK
TonyK

Reputation: 17114

You simply can't get gcc to compile the code 'as is'. If you need to compile this thing using gcc, you have to rewrite the code, in C++ or gcc-compatible asm. If there really is a lot of assembly code -- say, 200 instructions or more -- it might be worthwhile learning the gcc assembler syntax; if not, code it in C++.

Upvotes: 0

Igor Skochinsky
Igor Skochinsky

Reputation: 25268

GCC uses a very different syntax for inline assembler, so you won't be able to handle it with trivial changes. I see the following options:

  1. Rewrite everything in GCC syntax or as C code
  2. Make some script to translate to GCC syntax (non-trivial task)
  3. Compile the code with whatever compiler it was written for (MSVC?)

Upvotes: 2

Related Questions