2009-06-23 3 views
1

Dumme Frage, aber ich kann einfach nicht die erforderliche Flagge in gcc finden. Grundsätzlich habe ich in meiner C-Programm die folgenden Inline-Assembler-Codex86 inline assembler flag

__asm__ __volatile__ ("lea ebx, [timings] \n\t"); 

Beim Kompilieren, erhalte ich eine Fehlernachricht, die sagt: Error: invalid char '[' beginning operand 2 [Timings] ' `

Jetzt erinnere ich mich, dass vor langer Zeit habe ich eine Art Flag, das dem Compiler mitteilte, dass es sich um eine x86-Inline-Assembly handelt. Aber kann es online nicht finden, könnte mir vielleicht jemand sagen, welche Flagge ich benutzen muss?

Vielen Dank!

Antwort

-2

Verwenden Sie stattdessen __asm__. Schauen Sie here für mehr.

Versuchen Sie auch, das \ n \ t aus dem Baugruppencode zu entfernen.

6

Sie können Variablen nicht auf diese Weise mit GCC angeben. Eine ausführliche Beschreibung der Verwendung von Inline-Assembler finden Sie unter this document. Denken Sie auch daran, dass GCC AT & T-Syntax verwendet, nicht die Intel-Syntax, also müssen Sie Ihre Ziele auf der rechten Seite platzieren.

+0

Ich habe es in der Vergangenheit getan, können Sie mit dem Compiler angeben, dass Sie Intel Syntax verwenden, aber albern hat mich vergessen, wie zu diesem –

+0

Ich weiß nicht, wie gut es funktioniert, aber aus der GCC-Dokumentation: '-Masmus = DIALECT 'Ausgabe asm Anweisungen mit ausgewählten DIALECT. Unterstützte Optionen sind 'intel 'oder' att' (der Standard). Darwin unterstützt "Intel" nicht. – ephemient