1

Yop ! J'essaye d'apprendre l'asm, donc voici les premières questions :

Si j'ai bien compris, la machine ne connaît qu'un nombre fini d'opérations élémentaires (instructions) (c'est ça qu'on appelle "cablé" ?). Mais j'arrive pas à cerner la notion de romcall. Encore une fois si j'ai bien compris, c'est un mini-programme, un ensemble d'instructions élémentaires. Je ne comprends pas d'où elles sortent. Apparemment il y en a qui sont déjà stockées dans la TI, est-ce que c'est dans l'OS ? En plus j'ai vu qu'il y a des librairies, mais dans celles que j'ai vu, il y a le nom et l'adresse de la romcall, mais nulle part son code.

Enfin bon quelques réponses seraient les bienvenues.

2

J'sais pas mais d'après ce que j'ai compris les romcalls sont des routines de l'OS, donc impossible de voir comment elles sont faites (c'est compilé). Les librairies sont par contre non pas dans l'OS mais dans les shells ou autres (c'est le cas de GBA Lib, où les librairies sont stockées dans le fichier à part), mais c'est le même principe que les romcalls : tu mets des valeurs dans certains registres en paramètre et tu "sautes" vers le code de la lib qui fait ce qu'il faut.

'fin à mon avis c'est pas la peine de trop s'attarder sur ces détails, au départ le mieux c'est encore de coder beaucoup de petits programmes puis finir vers de gros.

3

Bah c'est pas savoir programmer qui m'intéresse, c'est plutôt de comprendre ce que je fais. Mais c'est possible de décoder l'OS ? Je veux dire, si on a l'OS en langage machine, on peut l'assembler et donc le comprendre non ?
Ah tiens quelqu'un a le fichier ti83plus.inc ?

Pfiou en fait je me rends compte qu'il y a comme 3 couches en asm :

- Les instructions élémentaires (câblées) du processeur
- Les romcalls et autres trucs de l'OS
- Le fonctionnement du compilateur

4

Non mais l'OS est déjà compilé donc il est impossible d'avoir accès à la source si c'est ça que tu veux dire (à la limite tu peux le "décompiler" mais ce sera une autre source qui sera générée...).

Sinon c'est pas impossible que les romcalls soient intégrées au processeur, mais j'en sais vraiment rien (tu devrais faire un tour du coté du wiki).

5

Non j'ai jamais dit ça : il y a une différence entre instruction et romcall. Les instructions sont définies par le processeur, les romcalls sont stockées dans la mémoire et sont définies par l'OS, les shells, ou autre.

Ah juste un truc que je comprends pas : un registre 8 bits, il peut contenir un nombre entre 0 et 1+2+2^2+2^3+...+2^8 non ?

1+2+2^2+2^3+...+2^8 = 2^9 -1 = 511

6

Euh, plutôt entre O et 1+2+2^2+2^3+...+2^7 (eh oui, 1==2^0...)
Soit entre 0 et 2^8 -1... Je suis en train de faire de l'assembleur - enfin du X86 - en ce moment alors si t'as d'autres questions, hésite pas

7

Ah oué voilà, c'est 1+2+...+2^7 et donc ça fait 2^8 -1 = 255
Ben j'ai plein de questions, le problème c'est qu'à chaque fois qu'il y a un truc que je comprends pas, je sais pas si ça appartient au domaine du processeur, de l'OS, ou du compilateur.

8

J'ai trouvé ça (enfin un truc qui paraît rigoureux) : Ici

Quelqu'un aurait la liste des instructions avec davantage d'explications sur leurs effets et leurs utilisations ?

Ca veut dire quoi ces 2 lignes là (et ça sert à quoi ?) :

.org 9D93h
.db $BB,$6D

C'est possible de voir le code compilé (en hexa) ?

9

Le .org sert à indiquer un emplacement où mettre le pointeur d'instructions.


Apparemment, quand tu lances un programme sur Ti, l'OS te le copie en Ram à l'adresse 9D93, mais il le lance quand même depuis la Rom. Et il lit ton .org, qui permet de déplacer le pointeur d'exécution au bon endroit, c'est à dire dans la Ram.
Le .db, permet de placer des données telles quelles dans ton programme mais je sais pas pourquoi c'est ces valeurs là qu'on spécifie. C'est peut être pour l'OS...

Tu devrais lire le tuto Asm in 28 Days... -> http://www.ticalc.org/pub/text/z80/83pa28d.zip

Par contre, si tu veux programmer en assembleur, je te conseille d'apprendre le X86, qui est quand même beaucoup mieux foutu...

10

Mais le X86 est encore d'actualité ?

11

C'est le langage des dual core de Intel... top

12

dual ? core ? Intel ?

13

C'est les processeurs pour PC qui se vendent bien depuis deux ans... Core, on le traduit par cœur, pr dire que en fait tu as deux puces (deux processeurs) montés sur un seul... Dans les faits, ça fait un peu moins que doubler les performances.

14

Cool c'est utile alors. T'as sûrement raison, t'en es où dans l'apprentissage (que je puisse te poser des questions) ?

15

Euh, j'ai appris à faire des fonctions récursives, et des pas récursives^^ (Ah, et puis des récursives terminales aussi)

Bon, en gros, je connais les normes d'écriture et je sais écrire à peu près tt type de fonctions. Sauf que je galère pr écrire des lignes de code...

16

Ok. Tu peux faire quoi d'intéressant avec ça ?

17

Euh, pas grand chose: tu compiles à la main des programmes C, et tu les exécutes. Tu peux faire de la manipulation de données...

18

Génial ^^
Bon pour l'instant j'apprends l'asm in 28 days, toujours ça de fait.

19

Y-a-t'il moyen de supprimer l'OS, et de continuer à faire de l'assembleur ? Après tout, le plus important reste l'assembleur lui-même, pas l'OS.

20

(quelle idée...)
avatar
- TI-Editor ! Éditez vos programmes On-line !
- WikiSquare Le wiki des jeux Square Enix !

21

L'OS ne t'empêche pas de faire quoi que ce soit, il te permet juste d'avoir un accès à des fonctions que tu n'es pas obligé d'utiliser...

Mais bon, si il te dérange trop, tu le supprime et tu mets ton code à la place... (tu fais comme BaOS, mais tu fais pas vraiment un OS tongue )
Dans tous les cas, faut te dire que l'OS est écrit en assembleur... Et puis franchement, déjà que l'assembleur avec un OS c'est la galère, vaut mieux pas essayer sans!

22

Ok ok, tu sais comment on fait pour coder en hexa sur la TI ? Je crois qu'il faut mettre au début du prog AsmPrgm, puis utiliser la fonction AsmComp([source],[destination]). Mais je sais pas s'il faut faire un header ou un truc du genre.

23

Ben le header est en Hexa... donc tu dois spécifier les données BB et 6D (ça c'est facile tu les colles l'un à l'autre), par contre faut que tu récupères le code pour le .org...

24

Ben j'ai un code tiré du blog d'adriweb (enfin ne rêvons pas, il n'en est pas l'auteur), pour switcher majuscules / minuscules.

:AsmPrgm
:21148A3E08AE77C9

J'ai essayé de le désassembler, sans succès.

Remarque, je viens de tester, ça marche pas.

25

Si je me souviens bien ça marche... Tu l'as lancé comment?

26

AsmComp(), puis avec Asm()

27

Je crois que c'est juste pr mettre les minuscules, ça gère pas l'autre sens...

28

Peu importe, de toute façon j'arrive pas à mettre en minuscules ^^.

29

Salut, je réponds juste aux premiers posts :
Baruch (./1) :
Si j'ai bien compris, la machine ne connaît qu'un nombre fini d'opérations élémentaires (instructions) (c'est ça qu'on appelle "cablé" ?).


Oui effectivement ( voir http://www.ticalc.org/pub/text/z80/z80iss.txt et http://www.ticalc.org/pub/text/z80/z80time.txt pour l'équivalent hexadécimal des instructions du processeur z80).


Mais j'arrive pas à cerner la notion de romcall. Encore une fois si j'ai bien compris, c'est un mini-programme, un ensemble d'instructions élémentaires.


Oui. Une rom call c'est juste une routine, c'est à dire une suite d'instructions qui se termine par l'instruction RET. Mini programme ça convient aussi.

Je ne comprends pas d'où elles sortent. Apparemment il y en a qui sont déjà stockées dans la TI, est-ce que c'est dans l'OS ?


Oui, en fait l'OS de la TI est un gros programme déjà compilé et présent dans la mémoire "solide" de la calculette (c'est pour cela qu'on parle de ROM, Read Only Memory, quand on récupère l'OS pour le faire tourner dans un émulateur). C'est fixé une fois pour toutes sur les TI-83 et TI-82, mais on peut flasher une TI-83+ pour y mettre une ROM officielle de version plus récente, ou pour mettre une ROM non officielle.

En plus j'ai vu qu'il y a des librairies, mais dans celles que j'ai vu, il y a le nom et l'adresse de la romcall, mais nulle part son code.


Tu aurais un lien ?
Car si tu parles de nom et d'adresse, il me semble que c'est un fichier d'en-tête.

Baruch (./3) :
Mais c'est possible de décoder l'OS ? Je veux dire, si on a l'OS en langage machine, on peut l'assembler et donc le comprendre non ?


À part TI eux-même, personne n'a accès au code source de l'OS. Tout ce qu'on a comme information c'est 1) sa forme binaire (qui permet quand même de voir ce que les rom call font) 2) les fichiers du genre ti83plus.inc qui répertorient le nom et l'adresse de rom calls.

Ah tiens quelqu'un a le fichier ti83plus.inc ?


Là, il faut impérativement que tu te mettes à utiliser ticalc.org voire tout simplement google, car si tu commence à demander pour des trucs aussi faciles à trouver que ça, t'as pas fini smile
Une autre source très utile: http://wikiti.brandonw.net
Globalement, n'hésite pas à aller voir dans les sites anglophones, même si tu ne maitrises pas la langue tu trouveras beaucoup de choses.


Au fait regarde ici, ça peut t'aider et j'aimerais avoir ton avis : topics/115864-tutoriel-francophone-en-travaux


EDIT: nouvelle adresse de wikiti

30

Merci beaucoup ! En fait la découverte de l'asm donne vraiment envie d'aller encore plus loin : comment fonctionnent les romcalls utilisées, comment l'asm est-il compilé, puis tout ce qui est de l'électronique. Donc je ne sais pas par où commencer : est-ce que je dois apprendre l'asm directement, en incluant l'utilisation des romcalls (entre autres), et accepter d'utiliser des outils que je ne comprends pas entièrement ; ou est-ce que je dois directement m'intéresser à un plus "bas" niveau : apprendre des bases d'électronique, commencer par coder en hexa.
En tout cas, je commence à assimiler les bases de l'asm, à force de les voir dans différents tutos (dont le tien). Merci encore pour ces quelques réponses, d'autres questions suivront certainement lorsque j'aurai terminé ce fichu programme en Caml ^^.