var QUESTION_ID=84260,OVERRIDE_USER=8478;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
5 16
est entré en tant que005 016
Réponses:
Gelée , 1 octet
Essayez-le en ligne!
Fonctionne également dans 05AB1E, APL, Braingolf, ,,, (Commata), Factor, Forth, Implicite, J, Julia, K, KDB +, Keg, Ly, MATL, Pyke, Deorst et Q.
la source
Minecraft 1.10, 221 caractères (non-concurrents)
Vous voyez, c’est ce que nous devons gérer lorsque nous créons des cartes Minecraft.
De côté: il n'y a aucun moyen de prendre une entrée de chaîne dans Minecraft, alors je triche un peu en vous faisant entrer les nombres dans le programme lui-même. (C'est un peu justifiable car de nombreuses cartes, comme Minecraft Bingo de Lorgon111, vous obligent à copier et coller des commandes dans le chat afin de saisir un numéro.)
Merci beaucoup pour le filtre MCEdit Block Labels .
Non compétitif en raison de difficultés d'entrée et je ne sais pas comment compter les octets dans cette chose (le système de blytes est défectueux pour les blocs de commande).
la source
0,1,2
Une autre solution consisterait à prendre 2 octets et sortie sur 9 fils, mais serait beaucoup moins golfy.Calcul lambda binaire , 4.125 octets
Entrée et sortie sous forme de chiffres d'église .
Dans le lambda calcul , il s'agit de λ m . λ n . λ f . λ x . m f ( n f x ).
Indice de Bruijn : λ λ λ λ 4 2 (3 2 1)
Le lambda calcul est une manière concise de décrire une cartographie (fonction).
Par exemple, cette tâche peut être écrite sous la forme de λ x . λ y . x + y
La chose à noter est que ce n'est pas une lambda (fonction) qui prend deux arguments. C'est en fait un lambda imbriqué. Cependant, il se comporte comme un lambda qui prend deux arguments et peut donc être décrit de manière informelle en tant que tel. Chaque lambda ne prend officiellement qu'un seul argument.
Par exemple, si nous appliquons ce lambda à 3 et 4:
Ainsi, le premier lambda renvoie en réalité un autre lambda.
Les chiffres d'église sont un moyen de supprimer les signes supplémentaires en ne laissant que des symboles et des variables lambda.
Chaque numéro dans le système de l'église est en fait un lambda qui spécifie combien de fois la fonction est appliquée à un élément.
Laissez la fonction être f et l'élément soit x .
Donc, le nombre 1 correspondrait à λ f . λ x . f x , ce qui signifie appliquer f à x exactement une fois.
Le nombre 3, par exemple, serait λ f . λ x . f ( f ( f x )), ce qui signifie appliquer f à x exactement trois fois.
Par conséquent, ajouter deux chiffres d'église (par exemple, m et n ) ensemble, revient à appliquer f à x , m + n fois.
Nous pouvons observer que cela revient à appliquer d'abord f à x , n fois, puis à appliquer f à l'élément résultant m fois.
Par exemple, 2 signifierait
f(f(x))
et 3 signifieraitf(f(f(x)))
, donc 2 + 3 seraitf(f(f(f(f(x)))))
.Pour appliquer f à x , n fois, nous avons n f x .
Vous pouvez voir m et n comme des fonctions prenant deux arguments, de manière informelle.
Ensuite, nous appliquons à nouveau f à cet élément résultant, m fois: m f ( n f x ).
Ensuite, nous rajoutons le passe-partout pour obtenir λ m . λ n . λ f . λ x . m f ( n f x ).
Maintenant, nous devons le convertir en index De Bruijn .
Premièrement, nous comptons la "distance relative" entre chaque variable à la déclaration lambda. Par exemple, le m aurait une distance de 4 car il est déclaré 4 lambdas "il y a". De même, le n aurait une distance de 3, le f aurait une distance de 2 et le x aurait une distance de 1.
Donc, nous l’écrivons sous cette forme intermédiaire: λ m . λ n . λ f . λ x . 4 2 (3 2 1)
Ensuite, nous supprimons les déclarations de variables, nous laissant avec: λ λ λ λ 4 2 (3 2 1)
Maintenant, nous le convertissons en calcul lambda binaire .
Les règles sont:
00
.01 m n
.1
i fois +0
, par exemple 4 devient11110
.λ λ λ λ 4 2 (3 2 1)
Λ λ λ λ
11110
110
(1110
110
10
)Λ λ λ λ
11110
110
0101 111011010
Λ λ λ λ
0101
111101100101111011010
≡
00
00
00
00
0101
111101100101 111011010
≡
000000000101111101100101111011010
la source
Common Lisp, 15 octets
la source
(+(read)(read))
Stack Cats , 8 + 4 = 12 octets
Courez avec les
-mn
drapeaux. Essayez-le en ligne!Le golf chez Stack Cats est hautement contre-intuitif, ce programme a donc été trouvé avec quelques jours de forçage brutal. À des fins de comparaison, une solution plus intuitive, écrite en utilisant le
*(...)>
modèle, prend deux octets de plusavec les
-ln
drapeaux à la place (voir le bas de cet article pour une explication).Explication
Voici une introduction à Stack Cats:
-m
ou-l
. Ici, le-m
drapeau est utilisé, ainsi le demi-programme ci-dessus s’étend en réalité]_:]_!<X>!_[:_[
.<
et>
déplacer une pile gauche et une pile droite , respectivement.-n
désigne les entrées / sorties numériques.Et voici une trace du programme complet étendu
]_:]_!<X>!_[:_[
:a+b
est alors sorti, avec la base -1 ignorée. Notez que la partie la plus délicate de cette solution est que la pile de sortie doit avoir un-1
en bas, sinon une pile de sortie[-1]
ignorerait simplement la base -1, et une pile de sortie[0]
provoquerait l’ingestion du zéro de base (mais une sortie pile de[2]
, par exemple, produirait2
très bien).Juste pour le plaisir, voici la liste complète des solutions associées de la même longueur que celle trouvée (la liste n'est peut-être pas complète):
La
*(>-_:[:)>
solution est plus longue, mais son écriture est plus intuitive car elle utilise le*(...)>
modèle. Ce modèle se développe<(...)*(...)>
lorsque utilisé avec le-l
drapeau, ce qui signifie:En tant que tel, le
*(...)>
modèle signifie que la première boucle est ignorée mais que la seconde est exécutée. Cela permet une programmation plus simple, car nous n'avons pas à nous soucier des effets de la boucle dans l'autre moitié du programme.Dans ce cas, l'intérieur de la boucle est:
La finale
>
dans le modèle nous ramène ensuite à la pile d’entrée, où ellea+b
est sortie.la source
Cerveau-flak , 6 octets
Essayez-le en ligne!
Brain-flak est une langue vraiment intéressante avec deux restrictions majeures.
Les seuls caractères valides sont les crochets, c’est-à-dire l’un de ces caractères:
Un ensemble de crochets sans rien entre eux s'appelle un "nilad". Un nilad crée une certaine valeur numérique, et tous ces nilads côte à côte sont additionnés. Un ensemble de crochets avec quelque chose entre eux s'appelle une "monade". Une monade est une fonction qui prend un argument numérique. Ainsi, les parenthèses à l'intérieur d'une monade sont évaluées, et c'est l'argument de la monade. Voici un exemple plus concret.
Le
()
nilad est égal à 1. Donc, le code suivant:Est évalué à 3. La
()
monade pousse la valeur à l'intérieur de celle-ci sur la pile globale. Donc ce qui suitappuie sur 3. Le
{}
nilad affiche la valeur en haut de la pile. Comme les nilads consécutifs sont toujours ajoutés, une chaîne de{}
somme additionne tous les éléments supérieurs de la pile. Donc, mon code est essentiellement:la source
Minecraft 1.10.x,
924512 octetsMerci à @ quat pour avoir réduit de 48 points le nombre de blytec et de 412 le nombre de compteurs.
Bon, alors, j'ai repris certaines des idées de cette réponse et en ai fait une version personnelle, sauf que celle-ci est capable d'accepter des entrées non négatives. Une version peut être trouvée ici au format bloc de structure.
(nouvelle version semble un peu ennuyeux tbh)
Des commandes similaires à celles de l'autre réponse:
Pour entrer des nombres, apparaissez dans un certain nombre de vaches et de cochons. Les vaches représenteront la valeur "n" et les porcs, la valeur "m". Le système de bloc de commande va progressivement tuer les vaches et les porcs et attribuer des valeurs si nécessaire.
Cette réponse suppose que vous vous trouvez dans un monde sans vaches ni porcs naturels et que les valeurs stockées dans "n" et "m" sont effacées à chaque passage.
la source
execute @e[type=Pig] ~ ~ ~ scoreboard players add m a 1
, de sorte que vous n'avez besoin d'aucune forme d'horloge.Retina , 42 octets
Essayez-le en ligne!
Explication
L'ajout de nombres en unaire est la chose la plus facile au monde, mais une fois que vous introduisez des nombres négatifs, les choses se compliquent ...
Nous commençons par convertir les nombres en unaires. Cela se fait en faisant correspondre chaque numéro avec
\d+
et en le remplaçant par$*
. Ceci est une fonctionnalité de substitution spécifique à Retina. La syntaxe complète estcount$*character
et insère descount
copies decharacter
. Ces deux options peuvent être omises là où lescount
valeurs par défaut$&
(c’est- à -dire le match lui-même) et parcharacter
défaut1
. Donc, pour chaque entrée,n
nous en avonsn
, et nous avons toujours des signes moins potentiels, ainsi que le séparateur d'espace. Par exemple, l'entrée8 -5
donne:Maintenant, pour traiter les nombres négatifs, il est plus simple d'utiliser un
-1
chiffre séparé . Nous allons utiliser-
à cette fin.Cette étape fait deux choses. Il supprime l'espace, les signes moins, et transforme le
1
s après un signe moins en-
eux-mêmes. Cela se fait en faisant correspondre|-1+
(c’est-à-dire un espace ou un nombre négatif) et en effectuant une translittération sur celui-ci. La translittération va de1p
à-_
, mais ici,p
s'étend à tous les caractères imprimables ASCII et_
signifie supprimer. Alors,1
dans ces matches,-
s deviennent des s et des inconvénients et les espaces sont supprimés. Notre exemple ressemble maintenant à ceci:Cette étape traite le cas où il y a un nombre positif et un nombre négatif dans l'entrée. Si c'est le cas, il y aura
1
s et-
s dans la chaîne et nous voulons qu'ils annulent. Ceci est fait en faisant correspondre deux caractères avec une limite de mot entre eux (puisque1
s est considéré comme un caractère de mot et-
n'est pas), et en remplaçant la correspondance par rien. Le système+
demande à Retina de le répéter jusqu'à ce que la chaîne cesse de changer.Maintenant, il ne nous reste que
1
s ou seulement-
s.Pour reconvertir cette valeur en décimal, nous faisons correspondre l’entrée entière, mais si possible, nous capturons un
-
groupe1
. Nous écrivons un groupe1
(pour ajouter un-
nombre négatif) puis nous écrivons la longueur de la correspondance avec$.&
(également une fonctionnalité de substitution spécifique à la rétine).la source
range
en œuvre dans la rétine. J'ai essayé plusieurs fois, mais les négatifs sont pénibles.Dominos , 38 000 octets ou 37 tuiles
Ceci est créé dans Simulateur de table . Voici une vidéo et voici le fichier . Il s'agit d'un demi-additionneur standard, composé d'une
and
porte pour la2^1
valeur de position et d'unexor
porte pour la2^0
valeur de position.Détails
2^1
et la droite est2^0
[noir] .100%
la source
Haskell, 3 octets
Les parenthèses sont ici car il doit s'agir d'une fonction de préfixe. Cela revient à prendre une section de la fonction +, mais aucun argument n'est appliqué. Il fonctionne également sur un large éventail de types, tels que les vecteurs, les matricies, les nombres complexes, les flotteurs, les doubles, les rationnels et, bien entendu, les nombres entiers correctement implémentés.
Comme il s'agit de Haskell, voici comment procéder au niveau du type. Cela se fera lors de la compilation au lieu de l'exécution:
Code adapté de Wiki Haskell
la source
Mathematica,
42 octets4barré est encore régulier 4 ...Tr
appliqué à une liste unidimensionnelle prend la somme des éléments de cette liste.la source
Langage de programmation Shakespeare ,
155152 octetsUngolfed:
J'utilise le compilateur SPL drsam94 pour compiler ce. Tester:
la source
Brachylog , 2 octets
Attend une liste avec les deux nombres en entrée
Alternativement, si vous voulez la réponse à
STDOUT
:la source
dc, 2 octets
Ajoute les deux premiers éléments de la pile (précédemment extraits de
stdin
), puis vide le contenu de la pile dansstdout
.EDIT: Après mûre réflexion, il semble que cela puisse être implémenté de plusieurs façons, en fonction du comportement d’ entrée / sortie souhaité.
Je suppose que la forme la plus complète pour la somme serait la suivante:
Attendez! Deux numéros peuvent être pris sur la même ligne, séparés par un espace! Cela nous donne:
la source
+f
,dc -e "?+p"
ça marche ici.+f
version fonctionne si vous avez déjà placé (deux exactement) des nombres dans la pile. Je ne savais pas vraiment sidc
I / O est censé êtrestd(in|out)
ou la pile. Rétrospectivement, c’était l’option la moins judicieuse à placer au sommet de la hiérarchie. : /JavaScript (ES6), 9 octets
la source
PHP, 20 octets
Étonnamment court cette fois-ci:
Fonctionne depuis la ligne de commande, comme:
la source
php sum.php 1 2 3 4 5 6
donc je ne suis pas sûr à 100% si ça va.-r
drapeau - alors ce n'est plus un problème.Cheddar, 3 octets
Ceci est une fonctionnalité intéressante de Cheddar appelée "opérateurs fonctionnels". Le mérite de cette idée va à @ CᴏɴᴏʀO'Bʀɪᴇɴ.
Voici d'autres exemples d'opérateurs fonctionnalisés:
la source
Python,
113 octetsint.__add__
Un simple opérateur spécial.
la source
Geometry Dash - 15 objets
Finalement fait.
15 objets ne sont pas beaucoup, mais c'était toujours un cauchemar de le faire (surtout à cause des nombres négatifs).
Parce que je devrais insérer 15 images ici pour savoir comment reproduire cela, je viens de télécharger le niveau. L'ID de niveau est 5216804. La description vous explique comment l'exécuter et vous pouvez le copier car il est copiable.
Explication:
Le déclencheur situé en haut à gauche (Instant Count 2) vérifiait si le premier ajout était 0. Si c'était le cas, il vérifiait si le deuxième ajout était positif ou négatif. S'il était positif, il transférait la valeur du deuxième ajout à la somme (style BF, utilisation de boucles) et s'il était négatif, il ferait la même chose.
La raison pour laquelle nous devons vérifier si le deuxième ajout est positif ou négatif est qu’il faudrait soustraire un du deuxième ajout et en ajouter un à la somme ou en ajouter un au deuxième ajout et soustraire un de la somme, respectivement.
Si le premier ajout n'est pas nul, il vérifie s'il est positif ou négatif en utilisant le processus ci-dessus. Après une itération dans la boucle while, il vérifie si le premier ajout est égal à zéro et si c'est le cas, il effectue le processus décrit au début de l'explication.
Puisque Geometry Dash est remarquablement similaire à BF, vous pouvez en faire une solution.
la source
MATL, 1 octet
Accepte un tableau de deux entiers en entrée et les additionne. Bien que le programme simple
+
fonctionne aussi, cela a déjà été montré pour d'autres langues.Essayez-le en ligne
la source
Perl 5.10, 8 octets
Les deux numéros à ajouter doivent figurer sur 2 lignes distinctes pour que celle-ci fonctionne:
Essayez celui-ci ici.
Un avec entrée sur la même ligne ( 14 + 1 octets pour -a flag )
Essayez-le ici!
Un avec entrée sur la même ligne ( 19 + 1 octets pour -a flag )
Essayez celui-ci ici.
Un autre, en changeant le séparateur par défaut de réseau ( 19 + 1 octets pour -a drapeau ainsi)
Essayez celui-ci ici!
la source
-p
drapeau.say$F[0]+$F[1]
,say pop()+pop
fonctionne (testé dans Strawberry 5.20.2 avec-E
) et vous enregistre un octet.Fuzzy Octo Guacamole , 1 octet
Une fonction qui prend les entrées du haut de la pile et les sorties en poussant vers la pile.
Exemple exécuté dans le REPL:
la source
Lot,
251816 octetsEdit: sauvegardé
79 octets en utilisant mon astuce de Séquence de signe alternée .la source
PowerShell v2 +, 17 octets
Prend les entrées en tant que deux arguments de ligne de commande distincts, qui sont pré-remplis dans le tableau spécial
$args
. Nous formons une chaîne avec l'-join
opérateur en les concaténant avec un+
au milieu, puis canalisons cette chaîne versInvoke-Expression
(similaire àeval
).Merci à @DarthTwon de m'avoir rappelé que, lorsqu’il s’agit de programmes aussi minimes, il existe de nombreuses méthodes de saisie des entrées avec le même nombre d’octets.
PowerShell n'est rien si ce n'est flexible.
la source
$args[0]+$args[1]
param($a,$b)$a+$b
> <> ,
763 octetsInterprète en ligne
Ou essayez-le sur TIO avec le drapeau -v.
Essayez-le en ligne
la source
+
suffirait: il séparerait deux nombres de la pile et remettrait le résultat de leur addition sur la pile. Le coût de-v
pourrait également être évité, car la lecture des nombres aurait pu être faite avant l'invocation de la fonction.C, 35 octets
Ce que j'ai fait ici est une addition définie sans utilisation d'opérateurs booléens ou arithmétiques. Cela fait récursivement x les bits de somme par 'xor', et y les bits de retenue par 'et' jusqu'à ce qu'il n'y ait plus de retenue. Voici la version non-golfée:
la source
MATLAB, 4 octets
1 octet supprimé grâce à @LeakyNun
C'est une fonction anonyme qui prend un tableau et donne la somme. Exemple d'utilisation:
la source
sum
?@sum
une réponse valide est fournie. Ou y a-t-il un autre méta-consensus?GoLScript , 1 octet (non concurrentiel)
Ajoute les 2 premiers chiffres de la pile. C'est ça.
Maintenant, comment les pousser sur la pile, je n'ai aucune idée. Je ne pense pas que ce soit possible .. toux @ toux CᴏɴᴏʀO'Bʀɪᴇɴ
la source
Explanation soon to be coming.
- Riker 3 juil. 16Langage de programmation Shakespeare (SPL),
137135 octetsProgramme complet, joué au golf:
Et une brève explication:
Je ne suis pas sûr que ce soit la plus courte possible. Consultez la page officielle pour plus d'informations.
Éditer 1: Suppression de l’
:
aprèsAct I
etScene I
car il semble que tout ce qui suit le chiffre romain est ignoré, ce qui permet d’économiser 2 octets.la source
x86_32 code machine, 2 octets
En supposant que les deux valeurs figurent déjà dans les registres ecx et eax, l'exécution de l'instruction add ajoutera les valeurs des deux registres et stockera le résultat dans le registre de destination.
Vous pouvez voir le programme complet écrit en C et assemblage en ligne ici . L'écriture du wrapper en C facilite la fourniture d'entrées et la réalisation de tests, mais la fonction d'ajout réelle peut être réduite à ces deux octets.
la source
ret
instruction (un octet). Et cela suppose une convention d’appel personnalisée quieax
est utilisée comme registre de passage d’argument. (La bibliothèque d’enseignement Irvine32 asm le fait, mais aucune convention d’appel standard pour x86-32 ou x86-64 ne le fait, contrairement à ARM où le registre de valeur de retourr0
est également le premier registre de passage d’argument.) Les conventions d’appel personnalisées sont acceptables. asm fonctionne cependant, vous n'avez donc pas besoin de le changer en 3 octetslea (%ecx, %edx), %eax
+ 1 octetret
pour Microsoft__fastcall
ou gcc-mregparm
.pop
n'est qu'un octet, mais lesesp
modes d'adressage relatifs nécessitent un octet SIB. Ainsi, une convention d’appel appelant peutpop %ecx
(l’adresse de retour),pop %eax
/pop %edx
/add %edx, %eax
(2 octets) /jmp *%ecx
(2 octets) = 7 octets au total. vsmov 4(%esp), %eax
(4B) /add 8(%esp), %eax
(4B) /ret
= 9 octets, ou 11 octets pour une version de l'appelant-pops de cette utilisationret imm16
, si j'ai bien fait. Il s’agit d’un octet supplémentaire pour le module SIB avec ESP comme base et d’un octet supplémentaire pour l’afficheur de chaque insn.