870

871

Martial Demolins
: et sinon, plutôt que d'aligner des nops, on peut faire une boucle.

Évidemment.
taken branch not taken, je ne vois pas trop ce que ça veut dire sad

Branch taken = On saute vraiment.
Branch not taken = On continue avec la ligne d'en dessous.
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é

872

Le temps d'exécution est différent selon que le dbra est "passant" ou "branchant", c'est à dire selon si il boucle ou non.

edit: cross (ça m'apprendra à faire le ménage (ouin))
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

873

874

bra.s = bra.b = branchement court = 2 octets, adresse codée en un octet PC-relatif
bra.w = branchement long = 4 octets, adresse codée en 2 octets PC-relatifs
jmp abs.l = saut = 6 octets, adresse codée en 4 octets absolus (donc relogement)

Il y a aussi jmp foo(PC) qui est plus ou moins équivalent à bra.w, mais peu utilisé.
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é

875

bra.s signifie branch always, branchement court, bref un saut limité sur 16 bits! Normalement tu n'as pas à ajouter bra.s ou bra.b l'assembleur le fait pour toi!

jsr est utilisé pour des sous-programmes, on l'utilise généralement pour sauter à une fonction sui se trouve dans une bibliothèque. bref quand le saut est plus long a effectué qu'un saut à l'interieur du programme.

jmp pareil, jsr et jmp sont utilisées pour des choses spécifiques genre executer du code d'un autre programme!

Moi je vois les choses comme cela, peut être que je me trompe!
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

876

geogeo> voui tu te trompes, cf le post de Kevin: le saut "short" a un opcode de 16 bits mais seulement 8 sont utilisés pour le saut.
Quand à l'assembleur qui te le fait par défaut, pas des masses en fait.
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

877

Si, A68k fait ça très bien, et GNU as aussi si tu lui donnes le bon opcode (jbsr, jbra, ..., qui indiquent que la taille doit être choisie par l'assembleur - contrairement à A68k, GNU as permet d'utiliser le même opcode pour les branchements et les sauts et choisit en fonction de la distance).

Et pour les cas où l'assembleur n'y arrive pas (par exemple pour les références externes), le linker le fait. (ld-tigcc rulez! tongue)
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é

878

879

ça renvoie le pointeur Null si c'est un numéro de handle valide (en gros < 2000), sinon n'importe quoi
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

880

881

Sauf si le HANDLE vaut 0, dans ce cas ca renvoit -1

882

883

-Comment faire pour vérifier qu'une allocation faite par AMS a bien la taille voulue? (ams alloue toujours l'espace demandé exact???)

il alloue au moins ce que tu lui as demandé, parfois plus
si le résultat est != 0, il t'a alloué assez
-Comment savoir si un handle a été effectivement désalloué?

Il n'y a pas de raison que HeapFree ne marche pas smile Et au pire, si tu oublies des handles, ça ne va pas faire planter un programme
-Que se passe-t-il si l'on fait un HeapFree avec un handle nul en argument? le tios a une réponse précise?

oui Protected Memory Violation ou Address Error
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

884

885

886

Martial Demolins
: Dans mon code, j'ai un " dcb.w 10,0", ou j'enregistre des handles, et je ne pensais pas que les données étaient enregistrées même après avoir quitté le prog (en fait, c'est une lib dynamique). Au fait, quand on a un "dc.x y" dans un prog, les données sont remises à leur valeur initiale au début du prog? Je croyais que c'était dS.x qui le faisait.
dc et ds ne font que réserver de la place dans ton code et éventuellement écrire des valeurs dedans.
Si ton programme est en RAM, il n sera pas recopié une deuxième fois (contrairement au cas où il serait archivé), donc lorsque ton programme modifiera les valeurs, les changements resteront après exécution, et si tu relances ton programme, tu retrouveras les valeurs qui ont été inscrite lors de la dernière exécution.
Pour les librairies, je ne sais pas comment fonctionne PreOs. Je ne sais pas s'il recopie la lib en RAM même si elle n'est pas archivée.
Dans tous les cas, si tes données sont archivées (ou compressées), elles seront recopiées en RAM et c'est cette copie qui sera utilisée et modifiée, pas l'original, donc tu retrouveras les valeurs initiales de tes variables.
Sinon, j'ai une autre question.
A un moment, je fais un rts après une fonction, mais dans la fonction appellante, j'aurais bien besoin d'une donnée laissée à -8(a7) par la fonction. A priori, c'est faisable, car je n'utilise pas la pile entre le moment où la donnée est écrite, et le moment où je veux la lire.
Le seul inconvénient serait une interruption, je ne sais pas si le status register et le pc sont stockés sur la pile utilisateur ou superviseur... J'ai regardé la doc de rte dans le 68kguide, il ne précise pas d'où les données sont poppées. Et tracer le programme jusqu'au moment où une interruption arrivera pile au bon moment paraît un peu fastidieux. Alors si quelqu'un avait l'info. wink
Le SR et le PC sont sauvegardés dans le registre SSP, donc pas de pb. Cela dit, ton idée est un peu sale.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

887

888

ds.b 4 va réserver 4 octets, de valeur nulle à l'origine
dc.b 4 va réserver 1 octet, de valeur 4 à l'origine
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

889

890

Pour les librairies, je ne sais pas comment fonctionne PreOs. Je ne sais pas s'il recopie la lib en RAM même si elle n'est pas archivée.
PreOS copie le code de la bibliothèque si celle-ci est en mémoire d'archive et que le bit 3 de son en-tête n'est pas mis. Dans les autres cas il travaille directement sur l'original, si je ne me trompe pas.

891

892

Ben le bus d'adresse d'un 68000 est sur 24 bits (23 bits exactement). Tu en deduis ce que tu veux.

893

894

895

>Un programme en cours d'éxécution est-il locké?
Oui

896

897

compresser ? (mais bon c aussi preos only)
regrouper les declarations de variable pour faire un memset() dessus a l'initialisation ?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

898

899

900


reste juste à savoir si on peut faire un pack-archive avec un seul fichier (je n'ai pas trouvé l'info dans la doc). Mais je ne vois pas pourquoi ça ne marcherait pas.

Oue. Je ne sais plus par contre si on peut faire une pack archive avec un seul fichier non-compresse grin
(remarque dans ce cas, il fait automatiquement une copie du programme).
Il faudrait rajouter _init un jour, mais je ne sais pas comment faire sans tout casser.