unix4fun

Aller au contenu | Aller au menu | Aller à la recherche

lundi 19 mars 2012

Android SDK, NDK, Kafka, Troika, des trucs en ..ka

Un tres simple introduction au NDK Android sur un billet sympathique et a lire pour ceux qui veulent s'y mettre! (et le cross compilo facile c'est par la aussi!! :))

https://www.synthetos.com/blog/native-embedded-code-on-android/

mardi 9 novembre 2010

Mon compilo est un beau salaud!

Je lis du code généré en ce moment... en particulier du code généré par Visual C++ avec des options "star-wars-security" blablabla mais c'est pas le sujet du jour...

Le sujet du jour c'est ma relative incompétence face a des choses comme:

[...]
.text:0069979F mov     eax, 66666667h          
.text:006997A4 imul    ecx
.text:006997A6 sar     edx, 1                          
.text:006997A8 mov    eax, edx                     
.text:006997AA shr     eax, 1Fh                       
.text:006997AD add     eax, edx
[...]

alors dans ecx, j'ai la valeur 0x20000, après des tentatives rapides de compréhension, je me suis bon les "magic values", j'en vois de temps en temps, ca pue la "magic value" des trucs de compilo-salaud pour tenter d'avoir de la précisions en continuant a travailler avec des entiers et en base2, bref..

En cherchant un peu je suis tombe la dessus:

Et j'ai enfin compris ce que ce petit snippet de code faisait, alors d’après vous il se passe quoi ? et quel est l’algèbre applique a la valeur dans ecx!? :) (je mettrais a jour avec une explication si le lien n'est vraiment pas clair...)

peace!

jeudi 4 novembre 2010

Le strict aliasing en C

Un billet assez exhaustif, avec des exemples de code et d'output assembleur : c'est ici

mercredi 15 septembre 2010

GCC ifunc!

Pendant ma petite pause lecture du matin, je suis tombé sur ce post concernant les nouvelles updates de la GNU toolchain, et en particulier un nouvel attribut: "ifunc"

Ca permet de définir dynamiquement une fonction qui va "résoudre" vers la fonction de votre choix en fonction de critères que vous pouvez définir, le monsieur @ http://nickclifton.livejournal.com/6612.html donne un exemple très simple et très clair (plus clair que mes explications foireuses) que je reproduirais ici :

void *slow_memcpy (void *dst, const void *src, size_t len)
{
         char *d = dst; char *s = src;

         while (len--)
           *d++ = *s++;

         return dst;
}

void *fast_memcpy (void *dst, const void *src, size_t len)
{
         __asm("foo %0 %1 %2" : "=m" (dst) :  "m" (src), "r" (len) : memory);
         return dst;
}

static void (* resolve_memcpy (void)) (void)
{
         return __cpu_has_foo () ? fast_memcpy : slow_memcpy;
}

void *memcpy (void *, const void *, size_t) __attribute__ ((ifunc ("resolve_memcpy")));

Les details chez http://nickclifton.livejournal.com/6612.html

mercredi 26 août 2009

Des états de branche dans ta couverture GCC

Ce billet:

  • parle en bien de sqlite
  • explique la différence entre un programme sure et fiable
  • digère la page d'explication de test de sqlite, a lire pour les passionés de TDD
  • explique les branches et les états de ton code et comment utiliser GCC pour évaluer le taux de couverture

Bref une bonne petite leçon d'analyse de code pour testage efficace.

Source

samedi 20 juin 2009

un week end de glande, netbsd, un macmini..

J'ai recu un mac mini et j'ai installe un NetBSD dessus, comme c'est un tout petit peu different, voici quelques liens qui peuvent etre utiles a d'autres :

Alors comme c'est relou de compiler sur un truc pareil et que netbsd te permet de cross compiler sans effort, voila deux ligne de plus:

# ./build.sh -m macppc -T tooldir.NetBSD-5.0_STABLE-macppc tools
# ./build.sh -m macppc -T tooldir.NetBSD-5.0_STABLE-macppc kernel=GENERIC

et pratiques, au moins ca traine pas sur mon laptop de compet multicore avec une hotte et des plaques a inductions integree..

et voila la bete:

capsule# uname -a
NetBSD capsule.unix4fun.net 5.0 NetBSD 5.0 (GENERIC) #0: Sun Apr 26 22:53:55 UTC 2009  builds@b4.netbsd.org:/home/builds/ab/netbsd-5-0-RELEASE/
macppc/200904260229Z-obj/home/builds/ab/netbsd-5-0-RELEASE/src/sys/arch/macppc/compile/GENERIC macppc
capsule#

me reste juste a cross compiler qqes package!

mercredi 10 juin 2009

le code c'est comme une barbie ca s'entretient, ca se coiffe, on lui achete un mobilum, on la maquille, on lui trouve un boulet, etc...

Un peu de bla et une tres courte discussion sur "monitorer" la memoire d'un process et ca derive sur le profiling, les call-graphs etc... et de tout ca qqes liens interessants:

enjoy!

lundi 25 février 2008

sunstudio, gcc, dwarf, sparc et petits nains de jardins...

Des p'tites infos et projets interessants au cours de mon joujou avec ma sunblade 1500.

Deja je me suis fait chier avec SunStudio mais en fait j'ai decouvert ca (trop tard!): http://cooltools.sunsource.net/gcc/

Pour les petits documents utiles :

Sinon j'imagine que comme d'hab je suis le dernier a decouvrir ca mais y a pleins de trucs convi a lire :

http://wikis.sun.com/dashboard.action