π
<-
Chat plein-écran
[^]

[C] [Project Builder] [Problèmes Divers]

Assembleur, Axe, C/C++, ICE...

[C] [Project Builder] [Problèmes Divers]

Message non lude axel stefanini » 18 Mar 2018, 00:57

Bonjour/bonsoir

Mon objectif derrière la réalisation de ce programme est de réussir à obtenir la position de la cellule de mémoire contenant l'ID de la calculatrice. (Raisons diverses et variées)

Dans un premier temps j'ai du mal à me familiarisé avec l'utilisation de cette "version" du C pour l'interaction avec la mémoire.
Je cherche à utiliser les pointeurs en C dans le project Builder, cependant j'ai quelques soucis. Pour vérifié que j'ai bien le pointeur d'une variable, malheureusement il n'y pas de simple "printf" dans cette version, donc j'ai crée un petit programme sensé affiché le pointeur d'une variable inventé, mais le résultat obtenu n'est pas celui voulu.

Code: Tout sélectionner
void main(void) {
    int truc = 10;
    int *pointeurSurTruc = &truc;

    gfx_Begin( gfx_8bpp );
    printIntXY(*pointeurSurTruc,1,1,8);
    while (!os_GetCSC());
    gfx_End();
    prgm_CleanUp();
}

void printText(const char *text, uint8_t xpos, uint8_t ypos)
{
    os_SetCursorPos(ypos, xpos);
    os_PutStrFull(text);
}

void printIntXY(int var, int x, int y, int dec) {
    gfx_SetTextXY(x,y);
    gfx_PrintUInt(var,dec);
}


Avec ce programme j'obtiens en résultat la valeur de "test" ce qui n'est pas ce qui est souhaité, cependant si je retire l'astérix à la ligne 7 pour obtenir non pas ce qu'il pointe mais l'adresse de ce qu'il pointe, il me dit :
"Argument type is not compatible with formal parameter"


Si quelqu'un à une idée sur la résolution de ce soucis, car moi je suis bloqué...



Merci d'avance :p
Avatar de l’utilisateur
axel stefanini
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 54.3%
 
Messages: 18
Inscription: 19 Sep 2016, 17:48
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: [C] [Project Builder] [Problèmes Divers]

Message non lude Adriweb » 18 Mar 2018, 15:32

Le code tel quel fonctionne comme prévu, déjà c'est pas mal, donc ta variable et le pointeur font bien le boulot (le C89 ne change pas ça, hein) :


Ensuite, le warning est normal, puisque tu passes un pointeur au lieu d'un int. Bon, dans ce cas, tu peux tout simplement le caster, et puis c'est tout : printIntXY((int)pointeurSurTruc,1,20,8);


Tu noteras que 13740062 ca fait bien en hexa ce à quoi on s'attend à peu pres: 0xD1A81E

Au passage, tu n'as pas besoin de prgm_CleanUp(); à la fin du main.
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.1%
 
Messages: 14606
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: [C] [Project Builder] [Problèmes Divers]

Message non lude axel stefanini » 18 Mar 2018, 16:41

Super ! Merci, ayant commencé les cours en C je connais pas encore tout, et j'ignorais cette histoire de "castrer" je vais me renseigner d'avantage sur cette notion.

J'ai un autre soucis..

si je fais
Code: Tout sélectionner
int *pointeurMachin = 12365478;

Logiquement je devrais obtenir un pointeur de la cellule 12365478 par exemple. et ensuite si je fais

Code: Tout sélectionner
printIntXY(*pointeurMachin,1,40,8);


Je devrais obtenir la valeur de la cellule ayant pour pointeur 12365478.
Cependant, ça ne fonctionne pas, j’obtiens
Code: Tout sélectionner
Initializer is not assignment compatible


Donc la question est ; Est-il possible de choisir de manière aléatoire un pointeur pour ensuite obtenir ce que celui-ci pointe ?
Avatar de l’utilisateur
axel stefanini
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 54.3%
 
Messages: 18
Inscription: 19 Sep 2016, 17:48
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: [C] [Project Builder] [Problèmes Divers]

Message non lude Adriweb » 18 Mar 2018, 17:17

Parce que 12365478 est un nombre et non un pointeur :P
Caste le en int* : int *pointeurMachin = (int*)12365478;

Cela dit, c'est pas bon d'avoir des addresses en absolu, sauf si tu sais exactement ce que tu fais.
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.1%
 
Messages: 14606
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: [C] [Project Builder] [Problèmes Divers]

Message non lude IAMISSAM » 18 Mar 2018, 17:24

Il veut avoir acces a la valeur contenue dans la case mémoire a l'adresse 12365478 sauf que c'est interdit il me semble
Avatar de l’utilisateur
IAMISSAMProgrammeur
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 36.3%
 
Messages: 63
Inscription: 11 Sep 2015, 21:56
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Terminale S SI

Re: [C] [Project Builder] [Problèmes Divers]

Message non lude axel stefanini » 18 Mar 2018, 17:44

Adriweb a écrit:Parce que 12365478 est un nombre et non un pointeur :P
Caste le en int* : int *pointeurMachin = (int*)12365478;

Cela dit, c'est pas bon d'avoir des addresses en absolu, sauf si tu sais exactement ce que tu fais.


Super! ça fonctionne,

J'aurai un autre petit truc à vous demander....
Puisque la la calculatrice lorsqu'elle lance un prgm en Ti-basic, le convertit en assembleur pour le faire fonctionner, est-il possible de récupéré le code asm d'un prgm en ti-basic pour l'intégré dans mon prgm ?

Genre l'objectif serait de mettre un prgm en ti-basic dans mon prgm en asm ^^
Si c'est pas possible, car d'après mes recherches c'est peu probable, existe-il un moyen de lancé un prgm Ti-Basic depuis un prgm en C,
Cesium le fait très bien, cependant, je comprends pas comment il y parvient en asm avec la fonction "_ParseInp"

Merci !
Avatar de l’utilisateur
axel stefanini
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 54.3%
 
Messages: 18
Inscription: 19 Sep 2016, 17:48
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: [C] [Project Builder] [Problèmes Divers]

Message non lude Dark coco » 18 Mar 2018, 18:23

IAMISSAM a écrit:Il veut avoir acces a la valeur contenue dans la case mémoire a l'adresse 12365478 sauf que c'est interdit il me semble


non ce n'est absolument pas interdit, on peut lire une valeur d'una dresse quelconque.
Cependant, il est interdit d'écrire en flash.
(21:48:26) Hamza.S: Dark_coco : tu a écris 2 phrases sans faute
(19:15:10) Hayleia: ah ça je confirme que t'as appris à écrire à l'école de baptiste_leprovost :troll:
Avatar de l’utilisateur
Dark cocoProgrammeur
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 65.8%
 
Messages: 95
Inscription: 15 Jan 2017, 14:39
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: dut gte

Re: [C] [Project Builder] [Problèmes Divers]

Message non lude Bisam » 18 Mar 2018, 18:40

axel stefanini a écrit:ayant commencé les cours en C je connais pas encore tout, et j'ignorais cette histoire de "castrer" je vais me renseigner d'avantage sur cette notion.

LOL ! Fais gaffe, ça fait mal !

Bref, le bon terme c'est "caster" (anglicisme issu du verbe anglais "to cast" que l'on pourrait imaginer comme utilisant le sens de "attribuer le rôle" ici). Cela désigne l'action de forcer la transformation d'une variable d'un type en un autre type, ici un pointeur en un entier.
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.5%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: [C] [Project Builder] [Problèmes Divers]

Message non lude axel stefanini » 18 Mar 2018, 18:50

D'accord! Merci pour les précision :p
Avatar de l’utilisateur
axel stefanini
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 54.3%
 
Messages: 18
Inscription: 19 Sep 2016, 17:48
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile


Retourner vers Langages alternatifs

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 7 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1908 utilisateurs:
>1890 invités
>14 membres
>4 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)