1560

La notion de typage est une notion toute relative embarrassed
(et si $myVar[0] est un tableau, $myVar ne change pas de type tongue)
avatar

1561

bah quand même, c'est un tableau de quelque chose, donc il y a une profondeur en moins embarrassed

1562

A fond a gauche le tableau, au fond a gauche
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

1563

J'ai honte d'avoir eu la même pensée cheeky

1564

grin
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

1565

Bon OK, FUCK iCloud Drive, Fuck iCloud Photos.
Il m'a encore BOUSILLÉ toute mon organisation, j'en ai MARRE.
Je repasse en stockage Gratuit iCloud, Fuck OFF.
(et pas la peine de la ramener avec "Apple c'est de la merde, gnagnagna")

1566

Ragnagnagna?
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

1567

1568

static uint32_t armv7m_getipsr(void)
{
  register int ipsr asm("r0");
  asm("MRS r0, IPSR" : "=l" (ipsr));
  return ipsr;
}


arm-none-eabi-gcc -nostdinc -nostdlib -g -MT armv7m_nvic.o -MD -MP -MF .d/armv7m_nvic.Td -c -mthumb -march=armv7-m -mcpu=cortex-m3 -Iinclude -Istm32f1 -isystem /home/grx/slos/include -isystem/home/grx/.sys/gcc-arm-none-eabi-5_2-2015q4/bin/../lib/gcc/arm-none-eabi/5.2.1/include -o armv7m_nvic.o armv7m_nvic.c

arm-none-eabi-objdump -d armv7m_nvic.o
000000d4 <armv7m_getipsr>:
  d4:	b480      	push	{r7}
  d6:	af00      	add	r7, sp, #0
  d8:	f3ef 8005 	mrs	r0, IPSR
  dc:	4603      	mov	r3, r0
  de:	4618      	mov	r0, r3
  e0:	46bd      	mov	sp, r7
  e2:	bc80      	pop	{r7}
  e4:	4770      	bx	lr
  e6:	bf00      	nop


• squalyl part en courant et en hurlant

*souffle*
static uint32_t armv7m_getipsr(void)
{
  register int ipsr asm("r3");
  asm("MRS r3, IPSR" : "=l" (ipsr));
  return ipsr;
}
000000d4 <armv7m_getipsr>:
  d4:	b480      	push	{r7}
  d6:	af00      	add	r7, sp, #0
  d8:	f3ef 8305 	mrs	r3, IPSR
  dc:	4618      	mov	r0, r3
  de:	46bd      	mov	sp, r7
  e0:	bc80      	pop	{r7}
  e2:	4770      	bx	lr

mouaisbon, mais bref, r0 c'est quand même la valeur de retour...

1569

C'est ignoble, mais t'as aucune optimisation activée non ? C'est connu que GCC sort du code pourri dans ce cas.

Sinon :
http://stackoverflow.com/questions/2716884/using-the-naked-attribute-for-functions-in-gcc
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

1570

en -O2 et avec r0 ça donne quoi ?

cross -> je m'arrachais les cheveux aussi avec GCC en 68k avant de me rendre compte que j'avais pas mis d'optim.
Du coup la génération du code doit être naïve.
Je dirais même que c'est unne bonne chose qu'elle soit par défaut aussi safe.

1571

sans optim ouais
static uint32_t __attribute__((naked)) armv7m_getipsr(void)
{
  asm volatile ("MRS r0, IPSR" ::: "r0");
}
000000d4 <armv7m_getipsr>:
  d4:	f3ef 8005 	mrs	r0, IPSR
  d8:	bf00      	nop
  da:	4618      	mov	r0, r3

MAIS POURQUOI BORDEL

edit: vais tester -O2 et -Og parce que -O2 c'est imbitable avec gdb

avec -O2 la fonction se fait inliner sans demander son reste grin

1572

normal ^^

1573

et avec -Og WAHOU c'est pas mal:

avec r3:
00000000 <armv7m_getipsr>:
   0:	f3ef 8305 	mrs	r3, IPSR
   4:	4618      	mov	r0, r3
   6:	4770      	bx	lr


avec r0:
00000000 <armv7m_getipsr>:
   0:	f3ef 8005 	mrs	r0, IPSR
   4:	4770      	bx	lr
   6:	bf00      	nop


je note!

Sans optim:
section size
.armvectors 308
.text 6207
.stack 4096
.data 68
.bss 581

avec -Og
section size
.armvectors 308
.text 3176
.rodata.str1.4 192
.stack 4096
.data 68
.bss 581

avec -O2
section size
.armvectors 308
.text 3260
.rodata.str1.4 192
.stack 4096
.data 68
.bss 581

1574

le nop, c'est le même que celui du 68k ? A quoi ça sert alors de le générer ? confus

1575

Ça fait longtemps que j'ai plus fait d'ARM, mais c'est pas un cas où l'instruction suivant un saut est toujours exécutée, même si le saut est effectué ? C'est le cas sur pas mal de procos RISC.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

1576

non cétait le cas sur xilinx microblaze et ptet MIPS mais pas en ARM. ils sont civilisés, pour ca au moins.

ici c'est un nop "mort" pour que les débuts de fonction soient alignés sur 4 octets.

1577

Manifestement tu es en thumb, active seulement -O1 (pour les inlines) et utilise le clobber "+l" au-lieu de "=l".

Tu verra, ça rend la vie plus pratique, comme le créneau assisté.

NzKg

1578

Et sinon, pour une fonction comme ça, il vaut mieux l'écrire entièrement en assembleur plutôt qu'en assembleur inline.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

1579

Refusé. je vais pas complexifier mon build system pour une ligne d'asm. En plus pas envie d'apprendre par coeur la convention d'appel explicite alors que l'inline m'abstrait ca.



Tron:

asm("MRS r0, IPSR" : "=l" (ipsr) :: "+l");

error: unknown register name '+l' in 'asm'

asm("MRS r0, IPSR" : "+l" (ipsr));

donc output pas clobber.
ca fonctionne. et ca fait quoi?

edit: Read Write Operand. aucune raison de faire ca. je reviens a =l

http://www.ethernut.de/en/documents/arm-inline-asm.html

1580

L'assembleur inline de GCC est une véritable plaie.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

1581

C'est on ne peu plus intuitif voyons!

Pensé et fait par des gens qui font de l'ASM inline
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

1582

L'assembleur inline de GCC expose essentiellement la représentation interne des instructions de GCC.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

1583

C'est pas plus mal, ca permet de fonctionner avec les optimisations.

Non jai pas a me plaindre. Je comprends juste pas le fonctionnement sans optim, mais il y a une solution, alors ok

1584

Bon aujourd'hui
J'ai un petit truc à faire, le genre qui devrait prendre 30 minutes. Mais pour m'en sortir je dois déboguer (le coup des console.log et attendre 1min+ pour compiler & redémarrer c'est pas viable, j'ai fait ça les derniers mois mais j'en peux plus).
Je veux résoudre le problème des touches flèches et ENTER qui ne marchent pas dans le débogueur chrome (ce depuis le début, seulement sur ma machine) car ce machin permettrait au moins de me faciliter un peu la vie quand le problème est du côté Javascript. Après tout j'ai beau essayer depuis des mois de m'en accomoder, c'est ultra impratique et si je ne peux pas appuyer sur ENTER pour exécuter un code javascript dans la console parfois c'est vraiment inutilisable.
J'essaie plein de trucs, genre comprendre les scancodes, voir comment est géré l'input dans la page de l'inspecteur mais c'est trop compliqué et minifié. Je pourrais aller voir le code source de Chromium Embedded Framework mais je laisse cette solution ultime pour plus tard.
J'essaie de me connecter au débogueur à partir de mon Mac sur le même network mais impossible. Le débogueur n'autorise que les connexions locales pour des raisons de sécurité.
J'apprends ce qu'il faut de ssh (mais vraiment juste ce qu'il faut) pour ouvrir un tunnel SSH et permettre de me connecter depuis le Mac au débogueur. Plein d'emmerdes, notamment le fait qu'il me dit en boucle qu'il n'a pas l'accès au port 22. Je lis consciencieusement la page man de ssh, sûr qu'il y a une erreur de syntaxe mais non. Je lis un tuto, puis un 2ème plus en détail (pour rien du tout), ensuite en tombant sur un post sur stackoverflow ça veut juste dire que mon serveur SSH n'est pas démarré. Bref sur le Mac même problème de touches qui ne marchent pas.
Je réfléchis, je me dis que si le SEUL problème est ça c'est probablement parce que mon collègue a un clavier Japonais qui aurait des scancodes différents. Je remets mon OS en Japonais et rigoureusement la même configuration clavier. Rien à faire.
Je trouve un site qui permet de comparer les scancodes tels qu'ils sont dans mon browser avec ceux de mon collègue chez qui ça marche(tm). Aucune différence.
Je me dis "bon je vais rebuilder le client pour ma machine", après tout ce sont des binaires précompilés qui étaient sur le git.
Evidemment impossible de recompiler. Il ne trouve pas gtk/gtk.h. Bien sûr, sur ma machine il y a GTK2 et GTK3 installés. Ce machin pourrait être explicite sur la version dont il a besoin. Je lis le README, aucune mention du fait même qu'il y ait besoin de GTK. Sur le site web rapidement non plus.
J'abandonne temporairement, mon collègue me dit qu'il y a des binaires précompilés de CEF. J'essaie ça. Au final je comprends que ce qu'il voulait me faire faire c'est juste utiliser l'appli d'exemple du CEF comme un autre browser pour voir si à partir de là ça marche. Je suis extrêmement dubitatif mais m'exécute.
Il se trouve que ça marche ainsi. Ca ne résoud pas vraiment LE problème mais ça me permet d'utiliser le débogueur en tous cas. Je vais mettre ça sur le compte du fait qu'on utilise une vieille version du CEF et qu'un Chrome récent ne fonctionne peut être pas avec. Après tout c'est "l'avantage" de Linux : pas de mises à jour automatiques, donc les autres dévs ne sont probablement pas à jour (mon collègue n'est que 3 versions de Chrome en retard ceci dit...).
Je voulais vérifier cette hypothèse en essayant la dernière version du client et en voyant si le problème se reproduit, mais le dernier ne trouve pas un certain .so sur mon système. J'ai la flemme, tant pis.
Bon maintenant je peux commencer ma journée, mon travail, à 5h du soir ! Si j'étais consciencieux bien sûr je devrais faire des heures supp pour compenser ça mais j'ai déjà une profonde envie de pleurer tellement je m'ennuie et n'aime pas être au milieu de la mer(de) comme ça que franchement bof.

Mais c'est vrai qu'au fond, régler son workflow, comprendre ce qu'on fait, c'est essentiel pour faire son travail. Il ne devrait pas y avoir de zone d'ombre, en tous cas dans la partie dans laquelle tu travailles.
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

1585

Ca l'air d'etre un sacré foutoir sorry

(c'es quoi "CEF" ?)

Heureusement dans 1 mois c'est fini!
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

1586

Brunni (./1584) :
Bon aujourd'hui

Oulà, tu montres bien ton ignorance de GNU/Linux:
Je me dis "bon je vais rebuilder le client pour ma machine", après tout ce sont des binaires précompilés qui étaient sur le git.
Evidemment impossible de recompiler. Il ne trouve pas gtk/gtk.h. Bien sûr, sur ma machine il y a GTK2 et GTK3 installés.

Il y a seulement le paquetage runtime, il faut installer le paquetage -dev correspondant pour pouvoir compiler des logiciels pour.
Après tout c'est "l'avantage" de Linux : pas de mises à jour automatiques

Si on installe le logiciel correctement, à travers un dépôt, les mises à jour se font automatiquement avec les mises à jour du système (et normalement l'interface utilisateurs te rappelle régulièrement de les faire), c'est justement le point fort de GNU/Linux.
Godzil (./1585) :
(c'es quoi "CEF" ?)

Chromium Embedded Framework
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

1587

Ben c'est clair que je ne comprends pas pas mal de choses dans ce projet, et que ça m'aide pas dans cet environnement.
Par contre nan je parle bien du package *lib-devel, supposé (là encore comme j'ai lu) contenir les headers. Et effectivement ils les installent mais sous gtk2/gtk.h et gtk3/gtk.h, ce qui est logique. Avec Ubuntu de toute façon t'as un frankenstein GTK2/3 au runtime on dirait, donc rien besoin d'installer. Mais après comment il va chercher gtk/gtk.h, est-ce que c'est une action à la configuration CMAKE, est-ce que c'est un lien symbolique (dégueu) que je dois faire, etc. ça je sais pas, faudrait que je lise plus.
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

1588

Il attend peut-être le vieux GTK+ 1. sick
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

1589

fuck yea
/*----------------------------------------------------------------------------*/
/* The return value of this function is the SP from where the irq frame should be popped.
 * If no context switching is implied, always return unmodified sp. */
void* armv7m_irq(void *sp, uint32_t irqno)
{
  /* Compute table index */
  irqno -= 2;

  /* Check that a handler is attached */
  if(handlers[irqno]!=0)
    {
      /* Call the handler */
      handlers[irqno](irqno, &sp, args[irqno]);
    }

  return sp;
}

/*----------------------------------------------------------------------------*/
void __attribute__((naked)) armv7m_irqentry(void)
{
  asm volatile
  (
    "mov  r0, sp     \n" /* Save SP that points to the irq stack frame */
    "push {lr}       \n" /* Backup the LR, this is the only one that must not be messed up */
    "mrs  r1, ipsr   \n" /* Get the IRQ number */
    "bl   armv7m_irq \n" /* Call into C with args in r0,r1 */
    "pop  {lr}       \n" /* Restore LR */
    "mov  sp, r0     \n" /* Get new SP from C code */
    "bx   lr         \n" /* Magic EXC_RETURN */
    :::
    "r0", "r1", "lr", "sp" /* Clobber list */
  );
}

1590

Tiens marrant, pourquoi un handler d'irq reçoit son numéro d'irq en argument ?

edit -> ok, je vois des raisons potentielles.