60

61

Pen^2 (./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 !

Ha ouais juste. Perdu l'habitude de ces proços qui prennent leur temps en sauvant l'adresse de retour sur la pile grin
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

62

Le code de Folco est un joli hack, pas très propre, mais qui économise effectivement 2 octets. Cela dit, ce genre de hacks rendent le débogage moins pratique.
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é

63

Pourquoi pas propre ? bsr n'est pas un outil pour brancher et revenir, c'est un outil qui empile PC et saute à une adresse, ce n'est pas pareil. C'est comme ça qu'il faut penser quand on code en assembleur. Sinon autant faire du C.

64

Sur 68k, ça va. Sur d'autres archis...
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.

65

Pen^2 (./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 !

Tribute to Pollux. C'est lui qui m'a donné le trick. smile
Pen^2 (./63) :
Pourquoi pas propre ? bsr n'est pas un outil pour brancher et revenir, c'est un outil qui empile PC et saute à une adresse, ce n'est pas pareil. C'est comme ça qu'il faut penser quand on code en assembleur. Sinon autant faire du C.

pencil
C'est comme ça qu'il faut penser pour sortir de sentiers battus et pas coder "comme les autres", par simple habitude de ce qu'on lit dans leur code.
Brunni (./54) :
Je ne suis pas sûr non plus de voir ce que veut faire Folco (où il empile son pointeur).

Je suis super étonné, j'étais persuadé que tu touchais fort en 68k confus

(bon Pen², lui je savais, Flash Savior rulez cheeky)
avatar
<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !

66

Je connais depuis longtemps l'astuce du bsr pour empiler une constante. Je ne l'ai pas utilisée ici parce que les chaînes de caractères n'ont rien à faire au plein milieu d'une fonction. Normalement, elles sont censées être dans des sections mergeables, pour pouvoir unifier les chaînes de caractères identiques si elles apparaissent plusieurs fois dans le programme; je ne l'ai pas fait dans mon exemple par souci de simplicité (mais GCC fait ça très bien).
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é

67

PS: Regarde le code source de TitaniK pour voir que je suis tout à fait capable d'écrire du code assembleur tordu quand c'est nécessaire. (Dans TitaniK, c'est nécessaire surtout pour respecter les contraintes de ne détruire strictement rien, l'optimisation n'est que secondaire.) Le problème, c'est que ce genre de code est illisible. Tu remarqueras d'ailleurs que j'ai mis des commentaires toutes les quelques lignes des stubs de TitaniK pour rappeler le contenu de la pile à cet endroit. Sans ça, j'étais totalement perdu dans mon propre 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é

68

Folco (./65) :
Brunni (./54) :
Je ne suis pas sûr non plus de voir ce que veut faire Folco (où il empile son pointeur).

Je suis super étonné, j'étais persuadé que tu touchais fort en 68k confus

Hé non ^^ Bon là j'admets que j'ai pas trop cherché, parce qu'à une époque j'aurais su, j'ai plus pensé parce que sur à peu près tous les processeurs "récents", style 90's et plus, brancher à une sous routine n'empile pas le pc (ça te permet de sauter à une sous-routine et retourner sans accès mémoire, donc en ~2 cycles top).
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

69

70

MIPS, et basiquement tout ce qui est RISC. Mais c'est vrai qu'ils ont gardé ça pour le x86_64 (ce qui est bizarre parce que les paramètres et le retour sont passés par registre).

Enfin pas d'excuse, j'aurais dû le savoir surtout que j'ai codé sur z80 y a pas longtemps tongue
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

71

Et sinon, l'astuce de Folco a 50% de chances (ça dépend de la chaîne de caractères en question) de n'économiser qu'un octet plutôt que 2, parce que le code ne peut pas continuer à une adresse impaire.
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é

72

Kevin Kofler (./66) :
Normalement, elles sont censées être dans des sections mergeables, pour pouvoir unifier les chaînes de caractères identiques si elles apparaissent plusieurs fois dans le programme; je ne l'ai pas fait dans mon exemple par souci de simplicité (mais GCC fait ça très bien).

Ca, c'est pour les C-istes, pas les assembleuristes. On ne développe pas en asm pour développer vite, on mets ses strings à part, toutes dans le même fichier pour éviter les paddings inutiles etc...
A noter que le trick donné est tout à fait réthorique, car les chaines dans le code vont très vite produire plus références longues que courtes (ça prend de la place une chaine, quand la limite pour les sautes est de +-128 octets), qu'une fois sur deux comme tu dis, ça ne gagneras pas deux octets, que ça rend le code pas maintenable etc... Voilà voilà... smile
Kevin Kofler (./67) :
je suis tout à fait capable d'écrire du code assembleur tordu quand c'est nécessaire

Je sais; t'inquiète cheeky
avatar
<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !

73

Folco (./72) :
Ca, c'est pour les C-istes, pas les assembleuristes. On ne développe pas en asm pour développer vite, on mets ses strings à part, toutes dans le même fichier pour éviter les paddings inutiles etc...

Il n'y a pas de padding entre 2 sections marquées "unaligned". smile J'ai pensé même à ça dans ld-tigcc (et j'ai aussi rajouté le flag "unaligned" à GNU as et à GCC, au même temps que le flag "mergeable").

.section .data.mystring,"dmu"
.xdef mystring
mystring: .asciz "ld-tigcc rulez!"

d = data
m = mergeable
u = unaligned
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é

74

Je ne parlais pas non plus de section. Je ne les utiliserais que si l'algo de ld-tigcc était optimal, ce qui n'est pas le cas. J'ai déjà écrit des macros pour optimiser l'usage des sections cependant.

!call GT Turbo
--- Call : GT Turbo appelé(e) sur ce topic ...

tu penses quoi des codes postés à la page précédente ? cheeky
avatar
<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !

75

Folco (./74) :
Je ne les utiliserais que si l'algo de ld-tigcc était optimal, ce qui n'est pas le cas.

Je veux te voir utiliser un linker à complexité exponentielle. roll
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é

76

Folco (./74) :
Je ne parlais pas non plus de section. Je ne les utiliserais que si l'algo de ld-tigcc était optimal, ce qui n'est pas le cas. J'ai déjà écrit des macros pour optimiser l'usage des sections cependant.

!call GT Turbo
--- Call : GT Turbo appelé(e) sur ce topic ...
tu penses quoi des codes postés à la page précédente ? cheeky


A part te tiré mon chapeau bas, perfect !! J'aurais juste peur a cause des alignements (Chaine de caractères qui pourraient être de nombre impairs) mais cette utilisation du BSR, j'en ai vu des milliers de lignes de code 68000, mais première fois de ma vie que je vois cette utilisation l'a, donc juste PERFECT !!! smile

Le jour ou un compilo me déballe le genre de code a 'la Folco', je me mettrais peut etre au C mais pour l'instant ASM powered !!

GT calin Folco
avatar
< SCPCD > j'aurais du dire "les doigts dans le cul vu que le java c'est de la merde"
Je suis Goto !

77

Faut mettre un .even après la chaîne effectivement, pour éviter de mauvaises surprises.
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é

78

GT Turbo (./76) :
A part te tiré mon chapeau bas, perfect !!
Folco (./65) :
Tribute to Pollux. C'est lui qui m'a donné le trick. smile.gif

cheeky

Tiens sinon, où pourrais-je lire du code à toi ?
Kevin Kofler (./77) :
Faut mettre un .even après la chaîne effectivement, pour éviter de mauvaises surprises.

Exactement.
avatar
<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !

79

Kevin Kofler (./77) :
Faut mettre un .even après la chaîne effectivement, pour éviter de mauvaises surprises.


C'est qu'un détail technique, cela fait un moment que mon subconscient 'even' toutes chaines de caractères.

Folco, du code a moi ?


GT smile
avatar
< SCPCD > j'aurais du dire "les doigts dans le cul vu que le java c'est de la merde"
Je suis Goto !

80

GT Turbo (./79) :
Folco, du code a moi ?

Yep, j'aimerais lire des programmes que t'as pu écrire. smile
avatar
<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !

81

#modcoquin#
C'est beau, une idylle naissante ! #modui#

Folco > boaf, je n'ai jamais été spécialement fort en 68k, tu sais ! Mais c'est rigolo d'entendre parler de flash savior après tout ce temps ; merci hehe

82

Pen^2 (./81) :
C'est beau, une idylle naissante ! modui.img

C'est un peu comme se déshabiller pour la première fois, lire un source xD
avatar
<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !

83

(Folco a un joli tatouage en "Courrier New" taille 8 sur le bas des hanches, le tout est est en asm 68k roar)
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

84

grin
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

85

grin

86

Et j'anticipe tout de suite la question : c'est sa femme qui l'a dit à son beau frère (le frère de Folco, donc), et celui ci ayant un compte sur yn...
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

87

bien sûr, bien sûr !

88

sisi, je t'assure, même que sont pseudo c'est surcouf
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

89

comme ça on pourra lui demander embarrassed

90

bande de cons, je vous aime tous grin
avatar
<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !