C
1int sample(int n){ 2__asm__(" 3 movl %eax,%edi \n\ /*引数nをeaxレジスタに*/ 4 testl $1,%eax \n\ /*1とレジスタeaxの論理積*/ 5 jz L1 \n\ /*論理積が1ならL1にジャンプ*/ 6 movl &1,%eax \n\ /*戻り値を1にする*/ 7 jmp end \n\ /*endへジャンプ*/ 8L1: \n\ 9 movl $0,%eax \n\ /*戻り値を0にする*/ 10 end: \n\ 11"); 12} 13main(void){ 14printf("%d\n",sample(2)); 15}
Cのプログラムの中にasm文でアセンブラ言語をかきました。しかし、
「'L1' is already defined」「'end' is already defined」というエラーが出てしまいます。
なぜ、このようなエラーが出てしまうのか分かりません。jz命令の書き方が間違っているのでしょうか?どこをどう直したら良いか教えて下さい。お願いします。
回答1件
あなたの回答
tips
プレビュー