5
#include <stdio.h>
int main(){
__asm__ (
"result: \n\t"
".long 0 \n\t"
"rdtsc \n\t"
"movl %eax, %ecx\n\t"
"rdtsc \n\t"
"subl %ecx, %eax\n\t"
"movl %eax, result\n\t"
);
extern int result;
printf("%d\n", result);
}
にアセンブラから変数を渡します。これは可能ですか?私のアセンブラコードはSegmentation fault (core dumped)
を引き起こします。私はUbuntu 15.10 x86_64、gcc 5.2.1を使用しています。Iは<code>result</code>変数介し<code>main</code>にアセンブラからいくつかのデータを渡したいC
GCCはあなたが参照することができ、このための[拡張ASM](https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html)を持っていますその '__asm__'フラグメントの出力変数に渡します。 –
これに追加する:コードは、プログラムのコードセグメントに 'result'のためのスペースを割り当て、' .long 0'は2つの 'add%al、(%rax)'命令を生成します。 –
時計を読むには、単に 'unsigned long long a = __builtin_ia32_rdtsc()'を使わないでください。次に、asmを書く必要はありません。 –