30

Ça par contre, c'est lamentable.
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

31

Link (./29) :
Je ne suis pas d'accord avec Kevin pour LLP64, quand on dépend autant de la compatibilité c'est le meilleur choix (même si ILP64 n'est pas si loin derrière).

Le ILP64 est encore pire, tu n'as plus de type 16 bits ou 32 bits, selon la taille que tu donnes à short.

Le LP64 est le seul choix sensé.
C'est encore pire que tu le crois: Ils ont carrément dit qu'on pouvait s'asseoir sur C99 et C11, qu'ils ne l'implémenteraient jamais. Ils ont officiellement décidé de ne supporter que C++11 et C90.

Je sais bien qu'ils ne prévoient pas du tout d'implémenter les standards C actuels, ils disent qu'il n'y a pas de marché pour ça. (Ils ont déjà dit ça avant le lien que tu cites.) Bref, on peut oublier leur chaîne d'outils pourrie. bang Personnellement, je ne supporte que (cross-)MinGW pour compiler mes applications portables pour cette plateforme, l'équipe de MinGW fait son possible pour proposer un compilateur standard malgré les limitations de la plateforme, développée par une entreprise connue pour son refus total de respecter les standards.

Cela dit, ils ont été obligés plusieurs fois de se plier à des standards, et AMHA on ne peut pas exclure que ce sera le cas pour le C99 ou C11 tôt ou tard. Mais en attendant, on a toujours des programmes codés pour des standards obsolètes, juste histoire de supporter une chaîne d'outils restée à l'état d'il y a 22 (standard ISO) à 23 (standard ANSI équivalent) années. bang
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é

32

On devrait déjà être plus ou moins content qu'ils supportent toujours le C/C++, parce qu'un temps ils voulaient un peu arrêter ça. Ils sont revenus en arrière mais on ne sait pas si c'est une question de temps. Dans tous les cas, ils n'ont plus envie d'investir beaucoup dans ces outils.
Je n'apprécie pas du tout mais comme tu l'as dit il y a des alternatives comme MinGW. Il me semble par contre qu'ils sont toujours en dessous de ce que pouvait produire MSVC++ en termes d'optimisations.
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

33

Brunni (./32) :
On devrait déjà être plus ou moins content qu'ils supportent toujours le C/C++, parce qu'un temps ils voulaient un peu arrêter ça. Ils sont revenus en arrière mais on ne sait pas si c'est une question de temps. Dans tous les cas, ils n'ont plus envie d'investir beaucoup dans ces outils.

Ils ne supportent plus que le C++, pas le "C/C++", le lien dit noir sur blanc que le compilateur C90 qu'ils proposent n'est là que pour la compatibilité et qu'ils ne prévoient pas du tout d'y toucher.

Un autre problème qui s'ajoute à celui-ci est que souvent, les projets veulent non seulement supporter VC++, mais en plus une version antique (pour différentes raisons: VC++ ne supporte déjà plus XP (!), le développeur du projet a une licence pour une ancienne version et ne veut pas changer etc.), et du coup même les fonctionnalités rajoutées au compilateur C++ ne sont pas disponibles (genre long long).

Et enfin, autre problème lié au refus d'implémenter le C99: alors que g++ gère certaines fonctionnalités du C99 qui ne sont pas dans le standard C++ en tant qu'extension (en particulier, les tableaux de taille variable!), VC++ refuse de les accepter. (D'ailleurs, Clang accepte ces extensions maintenant: Leur position initiale était de ne pas les accepter en C++, mais ils ont changé d'avis.)
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é

34

Kevin Kofler (./31) :
Link (./29) :
Je ne suis pas d'accord avec Kevin pour LLP64, quand on dépend autant de la compatibilité c'est le meilleur choix (même si ILP64 n'est pas si loin derrière).

Le ILP64 est encore pire, tu n'as plus de type 16 bits ou 32 bits, selon la taille que tu donnes à short.
Le LP64 est le seul choix sensé.

Uuugh???
N'était-ce pourtant pas ce que TU recommandais (LP64+typedef int long) what
Je n'apprécie pas du tout mais comme tu l'as dit il y a des alternatives comme MinGW. Il me semble par contre qu'ils sont toujours en dessous de ce que pouvait produire MSVC++ en termes d'optimisations.
Et de debugger graphique, il me semble.
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

35

Ben t'utilises un IDE genre Code::Blocks qui propose un frontend graphique à MinGW::gdb

36

Link (./34) :
Uuugh???
N'était-ce pourtant pas ce que TU recommandais (LP64+typedef int long) what

Non, pas du tout! Je recommanderais typedef int LONG; pour le LONG de l'API W32/W64 (à la place de l'actuel typedef long LONG;), pour justement pouvoir passer le vrai long en 64 bits (LP64, avec évidemment I32 et S16). Le C/C++ est sensible à la casse. Et personne n'utilise le LONG de W32 dans du code portable de toute façon.
Je n'apprécie pas du tout mais comme tu l'as dit il y a des alternatives comme MinGW. Il me semble par contre qu'ils sont toujours en dessous de ce que pouvait produire MSVC++ en termes d'optimisations.
Et de debugger graphique, il me semble.

Il y a un portage MinGW de Insight. (D'où crois-tu que les patches permettant de compiler TiEmu+GDB et maintenant Emu-TIGCC avec MinGW sont originaires?) La version la plus à jour semble être la 6.6 de 2007: http://sourceforge.net/projects/mingw/files/MinGW/Extension/gdb/Release%20Candidate_%20gdb-6.6/. Malheureusement, pour les versions plus récentes, ils n'ont compilé que la version en ligne de commande.
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é

37

(Je suis pas sûr que ce soit trop dans le sujet, mais à une époque j'avais compilé insight avec cygwin, donc ça doit passer avec la 6.8-1 de 2009 (http://sources.redhat.com/insight/))

38

Normalement, on peut aussi déboguer des logiciels MinGW avec un Insight Cygwin (ça marchait à l'époque où il n'y avait pas encore de binaires MinGW, en tout cas), donc ce n'est pas totalement hors sujet. smile

Cela dit, on s'éloigne du sujet d'origine "Taille d'un membre de structure"… embarrassed
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é

39

Oué mais c'est pas la taille du membre de struture qui compte, donc on peut parler d'autre chose ! tripo

40

trisotfl

41

#define offsetof(type,member) ((unsigned long)&(((type*)0)->member))
Intéressant cette définition de offsetof (kernel.h, PreOS). Celles proposées par Wikipedia sont plus complexes, mais celle-là me semble robuste, non ?

42

En fait elles ne fonctionnent pas de la même façon.

La définition de WP calcule une différence de pointeurs, et d'après la norme c'est valide : ça donne une "distance", l'unité étant la taille du type du pointeur (par exemple, entre deux longs consécutifs, la distance sera 1, pas 4) ; ici, vu qu'on utilise char, ce sont des octets.

La méthode de PedroM caste directement un pointeur vers un entier. Ça marche sur 68k (ainsi que sur x86, et pas mal d'autres procos), mais je ne suis pas certain que ce soit garanti sur toutes les architectures.
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

43

ça ne doit pas marcher sur les OS à mémoire virtuelle récents (au moins sur x86) car il est interdit de mapper les adresses virtuelles inférieures à une certaine valeur (quelques pages, donc multiples de 4k).

donc une différence de pointeurs est probablement plus robuste.

il me semble que sur gcc offsetof est un builtin

44

squalyl (./43) :
ça ne doit pas marcher sur les OS à mémoire virtuelle récents (au moins sur x86) car il est interdit de mapper les adresses virtuelles inférieures à une certaine valeur (quelques pages, donc multiples de 4k).

C'est calculé en temps de compilation, donc normalement le segfault n'est pas réellement activé par ce code.
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é

45

46

Kevin Kofler (./44) :
C'est calculé en temps de compilation, donc normalement le segfault n'est pas réellement activé par ce code.
Oui. D'un autre côté, comme le dit WP, si on suit strictement la norme c'est quand même une opération dont l'effet est indéfini, même si en pratique il est quasiment sûr que ça passera.

Le C, le langage "portable" où il faut rajouter des usines à gaz pour que le code soit portable tongue
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

47

le C est de l'ASM avec du sucre syntaxique pour écrire plus vite cheeky

48

Tu vas vexer Folco en comparant le C à l'assembleur embarrassed
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

49

Zerosquare (./48) :
Tu vas vexer Folco en comparant le C à l'assembleur embarrassed


Si il y avait que Folco....



GT wink
avatar
Accrochez vous ca va être Cerebral !!

50

C'est vrai hehe
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

51

pea.l asmrulez(%pc)
jbsr printf
addq.l #4,%a7
rts
asmrulez: .asciz "ASM rulez!\n"
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é

52

        bsr.s   \Push
        dc.b    "ASM rulez",0
\Push:  jbsr    printf
        addq.l  #4,sp
        rts
tongue

53

Comme c'est vilain !

54

Je ne suis pas sûr non plus de voir ce que veut faire Folco (où il empile son pointeur).
(d'ailleurs tu pourrais utiliser jbsr pour le \Push aussi, parce que l'assembleur saura générer un bsr.s automatiquement.)
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

55

bsr push empile son adresse de retour et branche sur push, qui appelle printf qui utilise l'adresse qu'il trouve sur la pile déposée par bsr push (qui se trouve être l'adresse de la chaîne) et au retour il restaure la pile avec le addq.
Comme c'est joli !

56

on devrait l'encadrer, je suis trouducuté par tant de rulez ##trilove##

57

tu veux encadrer Folco ?

58

59

(j'avais compris, en fait cheeky)

60