Passing a variable from assembler to C

#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); } 

I would like to pass some data from assembler to main using the result variable. Is it possible? My assembler code causes a Segmentation fault (core dumped) . I am using Ubuntu 15.10 x86_64, gcc 5.2.1.

+5
source share
1 answer

A better approach might be:

 int main (void) { unsigned before, after; __asm__ ( "rdtsc\n\t" "movl %%eax, %0\n\t" "rdtsc\n\t" : "=rm" (before), "=a" (after) : /* no inputs */ : "edx" ); /* TODO: check for after < before in case you were unlucky * to hit a wraparound */ printf("%u\n", after - before); return 0; } 
+1
source

Source: https://habr.com/ru/post/1236348/


All Articles