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);
}
我想通過result
變量從彙編器通過一些數據main
。這可能嗎?我的彙編程序代碼導致Segmentation fault (core dumped)
。我使用Ubuntu 15.10 x86_64,gcc 5.2.1。傳遞變量從彙編到C
GCC有[擴展ASM(https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html)對於這一點,讓你參考到'__asm__'片段中的輸出變量。 –
要補充說明的是:代碼就像在程序的代碼段中爲'result'分配空間,'.long 0'產生兩個'add%al,(%rax)'指令。 –
如果你想讀時鐘,爲什麼不使用'unsigned long long a = __builtin_ia32_rdtsc()'?那麼你不需要寫任何asm。 –