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);
}
Je voudrais transmettre des données d'assembleur à main
via la variable result
. Est-ce possible? Mon code assembleur provoque un Segmentation fault (core dumped)
. J'utilise Ubuntu 15.10 x86_64, gcc 5.2.1.passage variable d'assembleur à C
GCC a [ASM étendu] (https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html) pour cela, vous permettant de vous reporter à une variable de sortie dans ce fragment «__asm__». –
Pour ajouter à cela: le code tel qu'il est alloue de l'espace pour 'result' dans le segment de code du programme, et' .long 0' produit deux instructions 'add% al, (% rax)'. –
Si vous voulez lire l'horloge, pourquoi ne pas simplement utiliser 'unsigned long long a = __builtin_ia32_rdtsc()'? Ensuite, vous n'avez pas besoin d'écrire un ASM. –