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 » Syscall en Assembly pour FX-9860g
Guhikl Hors ligne Membre Points: 48 Défis: 0 Message

Syscall en Assembly pour FX-9860g

Posté le 14/12/2025 13:53

Pourquoi ca ne fait pas un syscall de test mode? (L'otre truc c'est pour avoir un error de TLB pour que je sais c'est dépasser l'essaye de syscall)
.global _start
_start:
NOT R1,R1

MOV.L syscall_num,R0
MOV.L do_syscall,R2
JMP @R2
NOP

RTS
LDS R1,PR
.align 4
syscall_num: .long 0x00000924
do_syscall: .long 0x80010070


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

Citer : Posté le 14/12/2025 14:00 | #


T'es sur quel modèle ? La 9760G-II n'existe pas. C'est soit 9860, soit 9750, et au cas où y'a des G-II (2) et des G-III (3). Sur certains modèles le test mode a été supprimé.

Du reste, note que ton rts est pas pris parce que tu jmp dans le syscall au lieu de jsr, du coup ça fait un appel terminal. Et même s'il était pris ça ne sauterait pas où tu veux parce que ça prend la valeur de pr avant le delay slot (sinon le delay slot servirait à rien).
Mon graphe (27 Juin): (MQ || Rogue Life) ; serial gint ; passe gint 3 ; Azur ; ...) || (shoutbox v5 ; v5)
Guhikl Hors ligne Membre Points: 48 Défis: 0 Message

Citer : Posté le 14/12/2025 14:20 | #


Ah désolé, c'est la Graph35+ avec le nouveau OS(2.05) de la FX-9860G.
Mais ca:
.global _start
_start:
MOV.L syscall_num,R0
MOV.L do_syscall,R2
JSR @R2
NOP
.align 4
syscall_num: .long 0x00000924
do_syscall: .long 0x80010070
me donne Illegal Code Err TARGET/PC=0 au lieu de entrer le test mode
Fromage
Guhikl Hors ligne Membre Points: 48 Défis: 0 Message

Citer : Posté le 14/12/2025 14:39 | #


Comment un fait un boucle infinit? Pourquoi pas comme ca?
.global _start
_start:
NOP
BRA _start
NOP
Fromage
Lephenixnoir Hors ligne Administrateur Points: 25563 Défis: 174 Message

Citer : Posté le 14/12/2025 14:44 | #


me donne Illegal Code Err TARGET/PC=0 au lieu de entrer le test mode

Là c'est presque sûr que le test mode n'existe plus sur ta machine, donc l'appel de fonction retourne instantanément, et la suite de ton code s'exécute. Et là comme tu n'a pas mis de code après le jsr/nop, ça continue sur le padding du .align 4, qui contient des 0, qui sont une instruction illégale.

Comment un fait un boucle infinit? Pourquoi pas comme ca?
.global _start
_start:
NOP
BRA _start
NOP

Si c'est bien ? Tu n'as pas besoin du premier nop même.
Mon graphe (27 Juin): (MQ || Rogue Life) ; serial gint ; passe gint 3 ; Azur ; ...) || (shoutbox v5 ; v5)
Guhikl Hors ligne Membre Points: 48 Défis: 0 Message

Citer : Posté le 14/12/2025 14:52 | #


Si c'est bien ?

Oui c'est bien.. mais ca me donne le même erreur que souvent,mon "erreur default"(illegal code err,pc/target=0),
et c'est pas que ce syscall ne marche pas, c'est que tous les syscall ne marche pas(par example RebootOS ou mode diagnostique)
Fromage
Lephenixnoir Hors ligne Administrateur Points: 25563 Défis: 174 Message

Citer : Posté le 14/12/2025 14:54 | #


Essaie Bdisp_AllClr_DDVRAM suivi d'une boucle infinie, ça devrait t'effacer l'écran ? Si ça marche pas, montre-moi le code complet.
Mon graphe (27 Juin): (MQ || Rogue Life) ; serial gint ; passe gint 3 ; Azur ; ...) || (shoutbox v5 ; v5)
Guhikl Hors ligne Membre Points: 48 Défis: 0 Message

Citer : Posté le 14/12/2025 14:56 | # | Fichier joint


Mais le boucle infinie ne marche pas... (assembly avec un .g1a; même resultat, mon erreur default)
.global _start
_start:
MOV.L syscall_num,R0
MOV.L do_syscall,R2
JSR @R2
NOP
BRA _start
NOP
.align 4
syscall_num: .long 0x00000144
do_syscall: .long 0x80010070
Fromage
Lephenixnoir Hors ligne Administrateur Points: 25563 Défis: 174 Message

Citer : Posté le 14/12/2025 14:58 | #


Ah oui mais d'accord. Deux choses.

Quand on dit une boucle infinie, généralement un pense à une double vide, donc genre :

.global _start
_start:
MOV.L syscall_num,R0
MOV.L do_syscall,R2
JSR @R2
NOP
loop:
BRA loop
NOP

Et même si c'est pas le bug là tout de suite je pense, pour que ton appelle de fonction marche normalement il faut que tu sauvegardes et restaures pr parce que sinon tu cours-circuites des return.
Mon graphe (27 Juin): (MQ || Rogue Life) ; serial gint ; passe gint 3 ; Azur ; ...) || (shoutbox v5 ; v5)
Guhikl Hors ligne Membre Points: 48 Défis: 0 Message

Citer : Posté le 14/12/2025 15:04 | # | Fichier joint


.global _start
_start:
STS PR,R10
MOV.L syscall_num,R0
MOV.L do_syscall,R2
JSR @R2
NOP
LDS R10,PR
loop:
BRA loop
NOP
.align 4
syscall_num: .long 0x00000144
do_syscall: .long 0x80010070
Toujours le même resultat
Fromage
Guhikl Hors ligne Membre Points: 48 Défis: 0 Message

Citer : Posté le 15/12/2025 17:42 | #


Tu avais raison!! J'ai oublier de le compiler pour big-endian.. ET CA MARCHE 🎉🎉🎉🎉🎉🎉🎉🎉
Fromage
Lephenixnoir Hors ligne Administrateur Points: 25563 Défis: 174 Message

Citer : Posté le 15/12/2025 18:17 | #


Oh l'erreur de fou. Bien vu.
Mon graphe (27 Juin): (MQ || Rogue Life) ; serial gint ; passe gint 3 ; Azur ; ...) || (shoutbox v5 ; v5)
Guhikl Hors ligne Membre Points: 48 Défis: 0 Message

Citer : Posté le 15/12/2025 18:35 | #


Mais comment on passe des Arguments au syscall?
J'ai trouver un tableu des syscall https://bible.planet-casio.com/simlo/chm/v20/fx_legacy_syscalls.htm mais pas pour les arguments..
Fromage
Lephenixnoir Hors ligne Administrateur Points: 25563 Défis: 174 Message

Citer : Posté le 15/12/2025 18:35 | #


La convention d'appel c'est r4..r7 pour les arguments et les autres poussés sur la pile en ordre inverse.
Mon graphe (27 Juin): (MQ || Rogue Life) ; serial gint ; passe gint 3 ; Azur ; ...) || (shoutbox v5 ; v5)
Guhikl Hors ligne Membre Points: 48 Défis: 0 Message

Citer : Posté le 15/12/2025 18:37 | #


Ok mais comment on sais quel valeurs vont dans quel register?
Fromage
Lephenixnoir Hors ligne Administrateur Points: 25563 Défis: 174 Message

Citer : Posté le 15/12/2025 18:40 | #


C'est dans l'ordre des arguments x)
Mon graphe (27 Juin): (MQ || Rogue Life) ; serial gint ; passe gint 3 ; Azur ; ...) || (shoutbox v5 ; v5)
Guhikl Hors ligne Membre Points: 48 Défis: 0 Message

Citer : Posté le 15/12/2025 18:41 | #


Oui oui,mais comment on sais tous les arguments? (Souvent c'est êcrit)
(Et comment on peux avoir les resultat des syscall comme getkey?)
Fromage

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 213 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