Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Effacer un Fichiére en Assembly pour Fx-9860GII
Guhikl Hors ligne Membre Points: 57 Défis: 0 Message

Effacer un Fichiére en Assembly pour Fx-9860GII

Posté le 21/12/2025 15:15

J'ai un fichiér "HEX.g1a" dans Memoire Storage(\\fls0\HEX.g1a) mais quand j'essayer de le effacer ca ne marche pas. J'ai essayer beacoup est regarder/compare dans l'emulateur les valeurs de le Registers est la Mémoire est ca devrait vraiment marcher, mais ca ne marche pas. Voici mon code:
.global _start
_start:
MOV.L ramaddr,R4


MOV.L sa,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L sb,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L sc,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L sd,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L se,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L sf,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L sg,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L sh,R6
MOV.L R6,@R4

MOV.L ramaddr,R4
XOR R5,R5
MOV.L otheramadr,R6
NOT R5,R5
MOV.L R5,@R6
NOT R5,R5
MOV #20,R7
MOV.L deletefile,R0
MOV.L syscall,R2
JSR @R2
NOP

!Display result as crash
NOT R2,R2
JSR @R2
NOP

!MOV R4,R11
!XOR R5,R5
!XOR R6,R6
!MOV.L getsize,R0
!MOV.L syscall,R2
!JSR @R2
!NOP


!MOV.L closefile,R0
!MOV.L syscall,R2
!JSR @R2
!NOP
.align 2
syscall:.long 0x80010070
deletefile:.long 0x00000439
openfile:.long 0x0000042C
closefile:.long 0x0000042D
getsize:.long 0x0000042F
ramaddr:.long 0xAC040000
otheramadr:.long 0xAC050000
sa:.long 0x005C005C
sb:.long 0x0066006C
sc:.long 0x00730030
sd:.long 0x005C0048
se:.long 0x00450058
sf:.long 0x002E0067
sg:.long 0x00310061
sh:.long 0x00000000
Je m'excuse si je pose trop de questions..


Lephenixnoir Hors ligne Administrateur Points: 25581 Défis: 174 Message

Citer : Posté le 21/12/2025 17:54 | #


J'avoue que je sais pas trop comment tu arrives à écrire du code comme ça... ? T'as une longue série de .long au lieu de "juste"

.word '\\', '\\', 'f', 'l', 's', '0', '\\', etc

Tu copies le chemin en RAM mais tu va chercher de la RAM là où elle n'existe absolument pas, donc évidemment ça n'écrit rien. Alors que t'as la pile sous la main...

J'ai aucune idée de ce que otheramadr est (la première n'est déjà pas une adresse dans la RAM) ?

Enfin, c'est pas x86, xor r5, r5 c'est juste mov #0, r5 (mais je comprends pas la section non plus)

Sans contexte on voit pas ce que tu veux faire ni même juste pourquoi tu le codes en assembleur ?
Mon graphe (27 Juin): (MQ || Rogue Life) ; serial gint ; passe gint 3 ; Azur ; ...) || (shoutbox v5 ; v5)
Guhikl Hors ligne Membre Points: 57 Défis: 0 Message

Citer : Posté le 22/12/2025 12:37 | #


J'ai pris une notre adresse que marche(0x88000000) et ca marche :O, j'aurais vraiment abondoné lá... Je sais que mon code n'est pas bien est j'ai pas encore utiliser le stack parce que j'aurais du apprendre comment l'utilisier au lieu de faire mon methode mal qui est plus simple(Que je connais déja), mais oui je vais le faire avec le stack. Est je fait XOR Rn,Rm au lieu de MOV #0,Rn parce que je croix que c'est plus vite? Merci telment!
Fromage
Lephenixnoir Hors ligne Administrateur Points: 25581 Défis: 174 Message

Citer : Posté le 22/12/2025 13:01 | #


De façon générale écrire à des adresses aléatoires en RAM est très très risqué, tu vas écraser des données de l'OS et le faire crasher plus tard. Il faut vraiment écrire que là où « t'as le droit », donc en gros sur la pile ou à 0x08100000.

Est je fait XOR Rn,Rm au lieu de MOV #0,Rn parce que je croix que c'est plus vite?

Eh non c'est que les processeurs x86 où "xor reg, reg" a un encodage plus compact que "mov reg, 0" et est donc plus rentable. SuperH est une architecture différente (et propre) et n'a pas cette bizarrerie. En l'occurrence "mov #0, rn" ira plus vite parce que ça évite de mobiliser l'ALU.
Mon graphe (27 Juin): (MQ || Rogue Life) ; serial gint ; passe gint 3 ; Azur ; ...) || (shoutbox v5 ; v5)
Guhikl Hors ligne Membre Points: 57 Défis: 0 Message

Citer : Posté le 22/12/2025 16:58 | #


Merci pour l'adresse! C'est grand comment? Tous P1?
Fromage
Lephenixnoir Hors ligne Administrateur Points: 25581 Défis: 174 Message

Citer : Posté le 22/12/2025 17:11 | #


Ouh là non, déjà P1 ça fait 512 Mo et y'a pas du tout tout ça, d'autre part l'adresse en question est dans P0.

Pour la taille, vois ici : https://bible.planet-casio.com/lephenixnoir/en/sh7305/calc/userspace

Sur ton modèle c'est probablement 32 ko moins la taille de la pile.
Mon graphe (27 Juin): (MQ || Rogue Life) ; serial gint ; passe gint 3 ; Azur ; ...) || (shoutbox v5 ; v5)
Guhikl Hors ligne Membre Points: 57 Défis: 0 Message

Citer : Posté le 22/12/2025 19:59 | #


Est-ce qu'il y aussi un region oú on peux écrire ET executer d'assembly/hex?
(0x8800 0000?)
Fromage
Lephenixnoir Hors ligne Administrateur Points: 25581 Défis: 174 Message

Citer : Posté le 22/12/2025 20:02 | #


Pas facilement non. Il faut aller dans P1 ou P2, purger les deux caches, etc. Un exemple simple dans gint (fonction de sommeil que tu peux interrompre) : https://git.planet-casio.com/Lephenixnoir/gint/src/branch/master/src/cpu/ics.s

Dans ce cas le code est mis dans un buffer fourni en paramètre. Le plus facile est de le prendre sur la pile.
Mon graphe (27 Juin): (MQ || Rogue Life) ; serial gint ; passe gint 3 ; Azur ; ...) || (shoutbox v5 ; v5)

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
: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:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
captcha
Rafraîchissez la page si vous souhaitez obtenir un nouveau CAPTCHA.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2025 | Il y a 198 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