#include <stdio.h>
int main()
{
int a = 0 ;
/*How can I write it on gcc*/
__asm {
mov a, 2 ;
add a, 4 ;
}
printf ("%d\n",a);
return 0 ;
}
這是VS2012的一些彙編代碼,我怎麼把它寫在gcc上?以下是VS2012的一些彙編代碼,我如何在gcc上編寫它?
#include <stdio.h>
int main()
{
int a = 0 ;
/*How can I write it on gcc*/
__asm {
mov a, 2 ;
add a, 4 ;
}
printf ("%d\n",a);
return 0 ;
}
這是VS2012的一些彙編代碼,我怎麼把它寫在gcc上?以下是VS2012的一些彙編代碼,我如何在gcc上編寫它?
你可以把它寫在GCC爲:
#include <stdio.h>
int main()
{
int a = 0 ;
/*How can I write it on gcc*/
__asm__ __volatile__ (
"movl $2, %0\n\t"
"addl $4, %0\n\t"
:"=r"(a) /* =r(egister), =m(emory) both fine here */
);
printf ("%d\n",a);
return 0 ;
}
謝謝你..這是我需要的 –
#include <stdio.h>
int main()
{
int a = 0 ;
/*How can I write it on gcc*/
asm volatile
(
"mov $2, %0\n"
"add $4, %0\n"
: "=r"(a) /* output operand */
: /* input operand */
: /* clobbered operands */
);
printf ("%d\n",a);
return 0 ;
}
請閱讀GCC's extended asm syntax瞭解更多信息。
呃..你的代碼存在一些錯誤。你能給我一些正確的代碼嗎? –
其實''= r「(a)'是一個輸出操作數 – 2013-11-14 11:39:38
謝謝你指出這一點,我已經修復了答案。任何不便敬請諒解。 – starrify
例如創建另一個文件fun.s
,並做以下
.global my_fun #to show where program should start
my_fun:
push %ebp #save stack ptr
#function body
pop %ebp #recover stack ptr
ret
然後,只需調用它在你的主功能
INT主要(){
my_fun();
}
編譯如下:g++ -o prog fun.s main.cpp
通過詢問的數以百萬計的樣品中的任意一個谷歌和複製的風格。我在google中輸入了「gcc inline asm」並獲得了19,400,000個結果。也許你需要努力一點? – enhzflep