zpalm a écrit : ↑01 déc. 2022 23:11
Brigade 43 au rapport, à 38 pas de la ligne de front:
Code : Tout sélectionner
01►LBL "MPO114" // *** Début du programme ***
02 "=" RCL X 0#2 STOS 00 <>ZTXT SKIP 02 ▫ // Initialisation des registres et préparation pour la suite
08▪"+" STO+ 02 // *** Boucle principale ***
10▫" F" STO+ 01 <>ZTZT // Préfixes des nouvelles valeurs
13 5 √ RCL× Y LG #Φ LG / ROUNDI // Calcul de l’indice n du nombre de Fibonacci le plus proche
21 ENTER FIB X>Z? DEC Y <>YYZT STO+ 01 // Si Fn > N alors on prend l’indice n précédent
27 FIB STO+ 02 STO- Z // Traitement de Fn
30 RCL T SB→Z STO 00 // Mise à jour de la représentation binaire
33 RCL T x≠0? BACK 27 ▪ // Boucle si on n’a pas terminé la décomposition de N
36 RCLS 00 // *** Fin du programme *** Affichage des résultats
37 SR 01 // Aligne la représentation binaire
38 END
A la réunion de ce matin, grande effervescence à l'Etat-major car toutes les huiles sont là impatientes de décortiquer cette nouvelle machine suisse. Les conseillers avaient beau prévenir qu'elle dispose certainement de beaucoup de fonctions nouvelles et très différentes de nos équipements classiques, un peu comme sa cousine la WP-34S. Nous avons tous été très surpris!
Malgré ces nombreux avertissements, il a fallu un certain temps aux pontes pour se rendre compte qu'il n'y avait pas de registre ALPHA mais que tous les registres, y compris les registres mémoires, pouvaient contenir des valeurs de différents types en peu comme les RPL.
C'est alors que l'analyse put progresser pas à pas.
La première observation et l'interprétation erronée du code qui en suivi constata que les registres
R00 R01 et
R02 sont utilisés. Mais chose inquiétante, sur la photo, ces résultats semblent être affichés simplement dans la pile opérationnelle de la machine. C'est alors seulement qu'un des
Generalsekretär compris et fit observer à l'assemblée très dissipée que l'avant dernière instruction était un
RCLS 00 et non pas un RCL 00 comme beaucoup d'officier empressés avaient cru lire.
D'ailleurs, au pas 05 lui correspond un tout aussi mystérieux
STOS 00.
Bien que personne dans l'assemblée mouvementée qui s'agitait autour de la table aux cartes où était posé plusieurs exemplaires des documents transmis, l'analyse du code se poursuivit plus ou moins chaotique.
A la grande stupeur générale et surtout du
Oberbefehlshaber des Armeekorps il apparut évident aux yeux de tous, que cette machine suisse possède une instruction
FIB calculant directement les nombres de Fibonacci. Stupeur! Aucune de nos troupes, même les troupes d'élites, ne possède nativement une telle fonctionnalité.
Et l'algorithme utilisé tire parti de cette caractéristique car contrairement à l'algorithme impérial, il ne calcule pas séquentiellement et successivement les valeurs de Fibonacci afin de pointer correctement sur l'entier ciblé.
Non, non, à chaque tour de roue, la machine suisse estime l'indice et pointe directement. Les tirs trop longs sont immédiatement réajustés par un petit décrément de l'indice. L'entier est décomposé dans la seconde.
Puis l'algorithme récupère ce qu'il reste de l'entier et recommence. L'Etat Major est effrayé par une telle efficacité, pourvu que l'ennemi ne mette pas la main sur un tel équipement.
Mais, les officiers ne sont pas au bout de leur surprise. D'après nos ingénieurs, trouver le bon indice de tir paraissait être une opérations longue et risquée. Effectivement, elle nécessite quelques opérations logarithmiques mais surtout le Nombre d'Or qui peut nécessiter soit des efforts conséquents pour extraire racines carrées et diviser, soit de nombreux oktetten pour mémoriser cette constante avec une précision suffisante.
Mais non! Cette machine suisse semble avoir été conçue par le diable en personne car elle possède l'instruction
#Φ qui nativement donne la valeur du nombre d'or ce qui ne prend qu'un pas et cela à pleine précision !!
Nous étions tous atterrés !
Un peu dépités, nous continuâmes l'analyse du code car il y avait ces curieuses instructions imprononçables
<>ztxt <>ztzt et
<>yyzt. C'est le
Feldsegeant Pfahldickopf qui eut l'idée que cela pouvait correspondre à un déplacement des registres dans la pile. Nous nous mimes donc à tracer à la craie le déplacement des valeurs dans la pile opérationnelle sur le tableau noir au fond de la salle. Et nous dures recommencer une première fois car nous avions oublié qu'il n'y avait pas de registre dédié aux chaines alphanumériques mais que celles-ci se placent dans les registres exactement comme tout autre type de valeur.
Alors la mécanique interne de cet algorithme nous apparut sereinement et son mécanisme évidemment fut dévoilé.
Mais, il restait encore quelques mystères:
- où dans ce code le signe "=" est-il affecté aux registres R01 et R02
- comment sont construites les chaines alphanumériques dans les registres R01 et R02
- comment la valeur binaire du code est construite.
Il nous fallut encore quelques minutes de travail collégial pour comprendre que l'instruction
SB→Z met à un le
n-ième bit en fonction de la valeur
n contenue dans le registre Z. Astucieux! Et cela explique pourquoi il faut au final déplacer les bits d'un cran vers la droite
SR 01 pour obtenir le code correctement aligné avec la norme impériale.
Ensuite, autre damnation de cette infernale machine, nous nous sommes rendu compte que les registres R01 et R2 sont alphanumériques tout au long du programme et que, contrairement aux instructions homonymes de nos équipements classiques et vétustes, les nouvelles instructions
STO+ 01 et
STO+ 02 permettent tout aussi bien l'arithmétique que a concaténation en mémoire.
Kiischtebléien op de Kuch, elles sont capables de convertir les formats, les valeurs numériques en arguments étant visiblement converties en chaine de caractères dans le registre sans créer le moindre trouble! Grandiose!
Ce n'est qu'à la fin de cette réunion que nous comprîmes que les instructions spéciales
STOS nn et
RCLS nn permettent en réalité de mémoriser (STO Stack) ou de rappeler (RCL Stack) la pile tout entière dans les registres mémoire à l'adresse de départ indiquée par
nn. Nous avons alors compris que les registres utilisés sont R00, R01 R02 et R03 qui contiennent à la fin du programme respectivement le code binaire (décalé), la liste des indices de Fibonacci, les termes de Fibonacci et une copie de l'entier dézingué.
Nous étions épuisés après un tel effort et la réunion du matin s'est terminée ainsi, en bavardages à propos de cette nouvelle machine et des circonstances et conséquences de son apparition.
J'en ai oublié de rappeler à l'Etat-Major de se prononcer à propos de l'inscription du Brigadier Zpalm au
Rangaufstiegs-Ehrentafel. je n'ai pas non plus croiser le
Kaporal Senf à propos du Chef de Section FLISZT.
Tant pis, cela sera à mettre à l'ordre du jour de la prochaine séance de commandement.