Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Discussions


Index du Forum » Discussions » compilateur on calc et ASM
Mactul Hors ligne Membre Points: 697 Défis: 0 Message

compilateur on calc et ASM

Posté le 25/03/2020 12:24

Bon, je le dis tout de suite, ce topic dépasse complètement mon niveau, c'est juste par curiosité que je pose cette question

Ce qui est nul avec le C de casio c'est qu'il n'est pas possible de compiler un add-in on-clalc
Je me demandais si théoriquement il était possible de créer un add-in qui compile.... des add-ins !

Pour ça, ça veut dire qu'il doit lire un programme en C écrit sur edit par exemple, puis le "traduire" en g1a
Ce qui reviens à ce demander ce qu'est ce fichier g1a
j'imagine que c'est une sorte de langage assembleur
qui doit bien avoir une syntaxe non ?

donc voilà, ma question c'est où est-ce que l'on trouve des infos sur ce fichier g1a, encore une fois, ce n'est que par curiosité


Dark storm En ligne Membre d'honneur Points: 11054 Défis: 176 Message

Citer : Posté le 25/03/2020 12:26 | #


Long story short, c'est pas possible de faire un compilateur. Un assembleur (ASM → binaire) c'est déjà plus réaliste, mais ensuite il faut linker.

Lephe sera plus calé, mais en gros un compilateur demande énormément de ressources pour comprendre le code.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Mactul Hors ligne Membre Points: 697 Défis: 0 Message

Citer : Posté le 25/03/2020 12:29 | #


Merci pour ta réponse, mais qu'entends tu par "énormément de ressources"
Trop de mémoire vive pour la petite machine c'est ça ?
Mes programmes
Cliquer pour enrouler

Venez me rejoindre sur mon nouveau serveur Discord dédié a la programmation sur toutes les plateformes
https://discord.gg/bzfymHQ

Venez vous instruire, dans ce magnifique cours sur les Intelligences Artificielles que j'ai créé:
http://reseaux-neurones-a--z.ml/
Faites apprendre des choses à une machine, faites reconnaître à un ordi des images...
Lephenixnoir En ligne Administrateur Points: 17874 Défis: 142 Message

Citer : Posté le 25/03/2020 13:16 | #


Effectivement, un compilateur est un programme très compliqué ! Mettons d'abord à plat plusieurs choses concernant les programmes C.

• Le langage C est très riche. Un compilateur fait à la main ne comprendra jamais toutes les fonctions du C que les compilateurs comme GCC et Clang ont accumulé au fil de l'eau, et ne pourrait clairement pas compiler les add-ins un peu compliqués avant plusieurs années.

• Les add-ins C ne sont pas auto-suffisants ! Ils utilisent des bibliothèques comme MonochromeLib, fxlib ou même gint. Il faut donc disposer de ces bibliothèques pour réussir à compiler. Or, ça finit par prendre de la place... plus que ce qui est disponible dans la mémoire de stockage !

• La « traduction » en assembleur n'est pas du tout unique, il y a plein de façon de la programmer. Et il y a notamment plein d'optimisations à faire sur le code généré pour qu'il soit intéressant. Un compilateur fait main ne produira jamais des add-ins aussi finement optimisés que GCC et Clang.

• Et surtout, le compilateur ce n'est pas tout. Il faut aussi un assembleur, et il faut surtout un linker ! Un objet aussi bien plus complexe qu'il n'y paraît. De mon estimation personnelle, le linker est encore plus mystique que le compilateur chez la majorité des gens.

Tout ça, quand bien même on serait en mesure de le développer, prendrait plusieurs années avant d'arriver à maturité (gint à côté c'est rien par exemple !). Et ça tiendrait à peine dans la mémoire de stockage, et ce serait sensiblement lent, et tu passerais ton temps à retransférer les bibliothèques pour les mettre à jour. Sans parler du fait que l'écran des Graph mono est bien trop petit pour la syntaxe assez riche du C, et qu'il faudrait encore programmer un éditeur de code assez bien foutu pour compenser du manque d'ergonomie du clavier calto.

Techniquement, si on le voulait vraiment, on pourrait faire un compilo ultra simple avec un assembleur très con et un linker à la va-vite, et le faire marcher. Mais ça attendrait très vite ses limites : en RAM, et en espace de stockage sur la calto.

Darks a quasiment tout dit, je ne fais que développer. Je précise juste que comprendre le code n'est pas très dur (les lexer et parser sont générés automatiquement, l'analyseur sémantique n'est pas très compliqué), la difficulté c'est principalement de le compiler vers un assembleur potable (allocation de registre et optimisations) puis de linker.
Mactul Hors ligne Membre Points: 697 Défis: 0 Message

Citer : Posté le 25/03/2020 14:08 | #


Waw...
Merci pour cette très longue réponse détaillée
Donc, jamais on ne verra de compilo on-calc si je comprends bien...
Sauf bien sur si les calculatrices passe sur une architecture unix (je pense à symbolibre)

Mais du coup, de manière purement théorique, le fichier g1a, c'est déjà du binaire ou c'est une archive avec les bmp et un langage très bas niveau ?
Mes programmes
Cliquer pour enrouler

Venez me rejoindre sur mon nouveau serveur Discord dédié a la programmation sur toutes les plateformes
https://discord.gg/bzfymHQ

Venez vous instruire, dans ce magnifique cours sur les Intelligences Artificielles que j'ai créé:
http://reseaux-neurones-a--z.ml/
Faites apprendre des choses à une machine, faites reconnaître à un ordi des images...
Lephenixnoir En ligne Administrateur Points: 17874 Défis: 142 Message

Citer : Posté le 25/03/2020 14:11 | #


Donc, jamais on ne verra de compilo on-calc si je comprends bien...
Sauf bien sur si les calculatrices passe sur une architecture unix (je pense à symbolibre)

Effectivement, sur Graph c'est tendu. Sur Symbolibre je pense qu'il est déjà installé, si non c'est l'affaire d'installer un paquet.

Le g1a c'est un binaire pur, du code assembleur et des données brutes. Ce n'est pas une archive, et il n'y a jamais de fichiers dedans. Tes images sont converties dans un format binaire durant la compilation (soit automatiquement, soit manuellement avec Sprite Coder ou équivalent).
Mactul Hors ligne Membre Points: 697 Défis: 0 Message

Citer : Posté le 25/03/2020 14:14 | #


Ok, merci, donc rien de compréhensible par un humain là dedans...
Mes programmes
Cliquer pour enrouler

Venez me rejoindre sur mon nouveau serveur Discord dédié a la programmation sur toutes les plateformes
https://discord.gg/bzfymHQ

Venez vous instruire, dans ce magnifique cours sur les Intelligences Artificielles que j'ai créé:
http://reseaux-neurones-a--z.ml/
Faites apprendre des choses à une machine, faites reconnaître à un ordi des images...
Lephenixnoir En ligne Administrateur Points: 17874 Défis: 142 Message

Citer : Posté le 25/03/2020 14:14 | #


Rien de compréhensible, en effet.

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
Pour coloriser votre code, cliquez ici.
Sinon cliquez sur le bouton ci-dessous.
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2020 | Il y a 48 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd