<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://futex.re/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Base_Assembleur</id>
	<title>Base Assembleur - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://futex.re/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Base_Assembleur"/>
	<link rel="alternate" type="text/html" href="https://futex.re/mediawiki/index.php?title=Base_Assembleur&amp;action=history"/>
	<updated>2026-04-20T11:39:51Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://futex.re/mediawiki/index.php?title=Base_Assembleur&amp;diff=1673&amp;oldid=prev</id>
		<title>Futex le 22 août 2012 à 14:38</title>
		<link rel="alternate" type="text/html" href="https://futex.re/mediawiki/index.php?title=Base_Assembleur&amp;diff=1673&amp;oldid=prev"/>
		<updated>2012-08-22T14:38:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;    NOP 	4 Bytes	opcode: 0x60000000 	(extended opcode for ori r0,r0,0) # NO_Operation&lt;br /&gt;
    li r4,456 # étend la valeur 456 défini sur 16bit dans le registre r4 en 32bit.(load immediate) &amp;lt;br&amp;gt;&lt;br /&gt;
    mr r4,r5 # copie de registre 32bit source r5 vers un registre destination r4 . (Move Register) &amp;lt;br&amp;gt;&lt;br /&gt;
    lbz r5,decalage (r6) # lit valeur 8 bit a l&amp;#039;adresse pointé par r6+decalage dans r5 et les 24 bit de poid fort sont mis à zero. (8 bit non signé) &amp;lt;br&amp;gt;&lt;br /&gt;
    lba r5,decalage (r6) # pareil mais les 24 bit fort sont étendu par le signe.(8 bit signé) &amp;lt;br&amp;gt;&lt;br /&gt;
    lhz r5,decalage (r6) # lit une valeur 16bits vers 32 bits, en temps que non-signé.(load half and zero) &amp;lt;br&amp;gt;&lt;br /&gt;
    lha r5,decalage (r6) # lit une valeur 16bits vers 32 bits, en temps que signé.(load half algebraic) &amp;lt;br&amp;gt;&lt;br /&gt;
    lwz r5,decalage (r6) # lit valeur 32 bit a l&amp;#039;adresse pointé par r6+decalage (load word and zero) &amp;lt;br&amp;gt;&lt;br /&gt;
(note importante: dans le cas de lwz sur une ABI 32bit, le &amp;#039;z&amp;#039; s&amp;#039;adresse au 32 bit non implémenté, et &amp;#039;lwa&amp;#039; n&amp;#039;a pas de sens.)&lt;br /&gt;
&lt;br /&gt;
    lwzx r5,r6,r7 # comme lwz, mais l&amp;#039;adresse lue est donné par r6+r7 &amp;lt;br&amp;gt;&lt;br /&gt;
    lwzu r5,decalage (r6) # comme lwz, mais aprés r6 = r6 + decalage &amp;lt;br&amp;gt;&lt;br /&gt;
    lwzux r5,r6,r7 # comme lwzx, mais ensuite r5 = r6 + r7. &amp;lt;br&amp;gt;&lt;br /&gt;
    lfs f0,decalage (r6) # lecture d&amp;#039;un float 4 octets dans le registre flottant f0. &amp;lt;br&amp;gt;&lt;br /&gt;
    lfd f0,decalage (r6) # lecture d&amp;#039;un float double 8 octets. &amp;lt;br&amp;gt;&lt;br /&gt;
    stb r5,decalage (r6) # écrit l&amp;#039;octet de poid faible de r5 à l&amp;#039;adresse r6+decalage.(store byte) &amp;lt;br&amp;gt;&lt;br /&gt;
    stw r5,decalage (r6) # écrit les 32 bits de poid faible à l&amp;#039;adresse r6+decalage.(store word) &amp;lt;br&amp;gt;&lt;br /&gt;
    stfsux ... # devinez ! &lt;br /&gt;
&lt;br /&gt;
Pourquoi ces noms si complexes et incompréhensibles ?&lt;br /&gt;
&lt;br /&gt;
Explication: les noms des mnémoniques PPC sont les initiales de la phrase décrivant leurs actions:&lt;br /&gt;
&lt;br /&gt;
Toutes les instructions commençant par &amp;#039;l&amp;#039; (load) chargent depuis la mémoire vers un registre. (à part li, load immédiate) Toute celles commençant par &amp;#039;st&amp;#039; (store) écrivent la mémoire. Suit ensuite le format déplacé: en PowerPC le vocabulaire n&amp;#039;est pas le même qu&amp;#039;en 68000: les &amp;#039;mots&amp;#039; PowerPC (word) font 4 octets (2 en 68k.) mais ce n&amp;#039;est qu&amp;#039;une question de convention et de vocabulaire. On a:&lt;br /&gt;
&lt;br /&gt;
    b (byte) 1 octet.&lt;br /&gt;
    h (half) entier 2 octets&lt;br /&gt;
    w (word) entier 4 octets&lt;br /&gt;
    fs flottant 4 octet IEEE&lt;br /&gt;
    fd flottant double 8 octet IEEE &lt;br /&gt;
&lt;br /&gt;
Ensuite viennent les lettres d&amp;#039;option de la copie:&lt;br /&gt;
&lt;br /&gt;
    &amp;#039;z&amp;#039; aprés un &amp;#039;l&amp;#039; signifie que les bits de poids fort du registre sont mis à 0 (cas d&amp;#039;un entier non signé, sauf lwz cas particulier.)&lt;br /&gt;
    &amp;#039;a&amp;#039; remplace z pour étendre le signe pour les nombres signé.&lt;br /&gt;
    &amp;#039;i&amp;#039; pour immédiate, valeur donné dans l&amp;#039;instruction.&lt;br /&gt;
    &amp;#039;x&amp;#039; pour &amp;#039;indexed&amp;#039; indique que qu&amp;#039;on additionne 2 registres pour trouver l&amp;#039;adresse à lire.&lt;br /&gt;
    &amp;#039;u&amp;#039; pour &amp;#039;update&amp;#039; indique que le pointeur utilisé va être incrémenté aprés la copie.( (a0)+ en 680x0 )&lt;br /&gt;
    &amp;#039;.&amp;#039; Ne marche pas pour les load et les stores mais pour les opérations de calcul et logique: indique optionellement si l&amp;#039;instruction doit mettre à jour &lt;br /&gt;
&lt;br /&gt;
le registre d&amp;#039;état cr0 dont les bits indiquent les dépassements et l&amp;#039;égalité à 0, pour un prochain test.&lt;/div&gt;</summary>
		<author><name>Futex</name></author>
	</entry>
</feed>