• STATISTIQUES
  • Il y a eu un total de 0 membres et 38275 visiteurs sur le site dans les dernières 24h pour un total de 38 275 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Le site du zero
    Découvrez gratuitement la programmation (C, C++, PHP, MySQL, XHTML, CSS...), Linux, le Mapping, la modé...
    Programmation
    [EN] Listbrain Version 3
    Site proposant 66 challenges présentés dans une liste mélangée.
    Challenges
    [FR] WeChall
    Audio: 3, Coding: 11, Cracking: 9, Crypto: 18, Encoding: 11, Exploit: 44, Forensics: 1, Fun: 6, HTTP: 6, Image: 8, Java:...
    Challenges
    [EN] PHPFreaks
    PHPFreaks est un site dédié à l'apprentissage et l'enseignement du PHP. Ici vous trouver...
    Programmation
    [FR] Forum-Webmaster
    Une communauté webmaster pour apporter / recevoir de l'aide en création de site internet. Webmaster...
    Webmaster
    [FR] Infomirmo
    Challenge présenté sous la forme de 6 niveaux de difficultés diverses et variées avec chacun plusieurs chall...
    Challenges
    [EN] Exploit-db
    Une base de données d'exploits triés par genre (GHDB, Remote, Local, Web, DOS, ShellCode) à ...
    Vulnérabilités

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[C] Local Computation
22-08-2014, 12h04
Message : #10
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: [C] Local Computation
(22-08-2014, 11h40)notfound a écrit : Juste un petit soucis quand je veux afficher fib(<lim>); ça fout 0. J'vous laisse chercher pourquoi.

Je sais pas si j'ai bien compris, pour moi, tu veux faire : printf("%d\n", fib(lim));

Si c'est ca, ma réponse serait: parce qu'il y a pas de valeur de retour parce que ça n'est pas une fonction, du coup il print le truc qui est dans RAX, ce qui fout potentiellement la merde ouais.
Accessoirement, en l'état, ca ne compile pas, j'ai été obligé de virer le ';' a la fin de la macro pour pouvoir compiler de cette manière.

Alors du coup, je viens de tester de rajouter ça à la fin de la macro :
Code C :

asm ("movl %0, %%eax"::"r"(nb);
 


Mais lors de la compilation, gcc affiche un message d'erreur comme quoi il ne doit PAS y avoir de valeur de retour.

Ensuite, pour modifier eax un peu indirectement, je me suis dit que je pouvais call une fonction pour faire en sorte qu'elle return la bonne valeur, et comme RAX ne serait pas modifié entre temps, on pourrait le return.
Sauf que la aussi, meme message d'erreur a la compilation.

Pour le coup, ce code fonctionne :
Code C :

#include <stdio.h>

int test(int nb) {
  return nb;
}

#define fibonacci(l)({ \
      int i=0, a=0, b=1, s=0 ;                  \
      while ((l-- - 1)){ s = a + b; a = b; b = s; i++; }    \
      test(b);                          \
    });


int main(void){
  int lim=9;
  int nb;
 
  nb = fibonacci(lim);
  printf("fib(%d) = %d\n", lim, nb);
  return 0;
}
 


En revanche, celui ci ne compiles pas:
Code C :


#include <stdio.h>
#define fibonacci(l)({ \
      int i=0, a=0, b=1, s=0 ;                  \
      while ((l-- - 1)){ s = a + b; a = b; b = s; i++; }    \
      asm ("movl %0, %%eax"::"r"(nb);

    });

int main(void){
  int lim=9;
  int nb;
 
  nb = fibonacci(lim);
  printf("fib(%d) = %d\n", lim, nb);
  return 0;
}
 
+1 (1) -1 (0) Répondre


Messages dans ce sujet
[C] Local Computation - par octarin - 21-08-2014, 17h18
RE: [C] Local Computation - par ark - 22-08-2014, 09h54
RE: [C] Local Computation - par Junky - 22-08-2014, 10h05
RE: [C] Local Computation - par notfound - 22-08-2014, 10h25
RE: [C] Local Computation - par Junky - 22-08-2014, 10h40
RE: [C] Local Computation - par ark - 22-08-2014, 10h48
RE: [C] Local Computation - par notfound - 22-08-2014, 11h17
RE: [C] Local Computation - par Junky - 22-08-2014, 11h23
RE: [C] Local Computation - par notfound - 22-08-2014, 11h40
RE: [C] Local Computation - par ark - 22-08-2014, 12h04
RE: [C] Local Computation - par eax64 - 29-08-2014, 18h27
RE: [C] Local Computation - par b0fh - 29-08-2014, 19h14

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut