GCC-Inline-Assembly: Sprung zu label außerhalb block
Bei der Verwendung von inline-assembly unter MSVC, erlaubt zu springen, außerhalb der Montage-block referenzieren ein label in der C/C++ - code, wie bereits erläutert,in diesem MSDN-Artikel.
Kann so etwas geschehen, wenn die Verwendung von inline-assembly unter GCC?
Hier ist ein Beispiel von, was ich versuche zu erreichen:
__asm__ __volatile__ (
" /* assembly code */"
" jz external_label; "
);
/* some C code */
external_label:
/* C code coninues... */
Den compiler, jedoch beschwert sich über "external_label" nicht definiert wird.
- Warum
__volatile__
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was ist, wenn Sie definieren das label mit dem assembler?
Update: dieser code scheint zu funktionieren:
Als der GCC 4.5, können Sie auch
asm goto
. Das folgende Beispiel springt, um eine C-label: