From 2791d5868e0bb6f73836a79d65c7ddbbe4552bf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Hord=C3=A9?= Date: Wed, 28 Mar 2007 15:50:22 +0000 Subject: [PATCH] feat: ajout de la commande REGS permettant d'afficher le contenu des registres processeurs --- commande/commande.asm | 133 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 116 insertions(+), 17 deletions(-) diff --git a/commande/commande.asm b/commande/commande.asm index b5952a1..f4308f7 100644 --- a/commande/commande.asm +++ b/commande/commande.asm @@ -261,7 +261,93 @@ okchanged: killing db 'Fermeture du processus %0\l',0 errorkilling db '\c04Impossible de fermer ce processus',0 -code_irq: +code_stack: + +code_dump: + +code_regs: +call [cs:savecontext],offset allregs +push 6 +push eax +push eax +mov ax,[word ptr allregs.sss] +push 6 +push eax +push eax +mov ax,[word ptr allregs.sgs] +push 6 +push eax +push eax +mov ax,[word ptr allregs.sfs] +push 6 +push eax +push eax +mov ax,[word ptr allregs.ses] +push 6 +push eax +push eax +mov ax,[word ptr allregs.sds] +push 6 +push eax +push eax +mov ax,[word ptr allregs.scs] +xor eax,eax +push 10 +pushd [dword ptr allregs.seip] +pushd [dword ptr allregs.seip] +push 10 +pushd [dword ptr allregs.sesp] +pushd [dword ptr allregs.sesp] +push 10 +pushd [dword ptr allregs.sebp] +pushd [dword ptr allregs.sebp] +push 10 +pushd [dword ptr allregs.sedi] +pushd [dword ptr allregs.sedi] +push 10 +pushd [dword ptr allregs.sesi] +pushd [dword ptr allregs.sesi] +push 10 +pushd [dword ptr allregs.sedx] +pushd [dword ptr allregs.sedx] +push 10 +pushd [dword ptr allregs.secx] +pushd [dword ptr allregs.secx] +push 10 +pushd [dword ptr allregs.sebx] +pushd [dword ptr allregs.sebx] +push 10 +pushd [dword ptr allregs.seax] +pushd [dword ptr allregs.seax] +push 10 +pushd [dword ptr allregs.seflags] +pushd [dword ptr allregs.seflags] +call [cs:print],offset registershow +ret + +registershow db '\l\c02Liste des registres du Microprocesseur\l\l\c07' + db '\c04CPU\h30FPU\c07\l' + db 'EFGS: 0x%hD : %w |\h32ST(0) :\l' + db 'EAX : 0x%hD : %w |\h32ST(1) :\l' + db 'EBX : 0x%hD : %w |\h32ST(2) :\l' + db 'ECX : 0x%hD : %w |\h32ST(3) :\l' + db 'EDX : 0x%hD : %w |\h32ST(4) :\l' + db 'ESI : 0x%hD : %w |\h32ST(5) :\l' + db 'EDI : 0x%hD : %w |\h32ST(6) :\l' + db 'EBP : 0x%hD : %w |\h32ST(7) :\l' + db 'ESP : 0x%hD : %w |\h32\l' + db 'EIP : 0x%hD : %w |\h32\l' + db 'CS : 0x%hW : %w |\h32\l' + db 'DS : 0x%hW : %w |\h32\l' + db 'ES : 0x%hW : %w |\h32\l' + db 'FS : 0x%hW : %w |\h32\l' + db 'GS : 0x%hW : %w |\h32\l' + db 'SS : 0x%hW : %w |\h32\l',0 + + +allregs regs <> + +code_irqs: call [cs:mbfind],offset interruptionbloc jc erroronint call [cs:print],offset irqmsg1 @@ -562,19 +648,22 @@ fr: db '1', 02, '&', 02 db 00, 00, 00, 00 commands dw str_exit ,code_exit ,syn_exit ,help_exit - dw str_version,code_version,syn_version,help_version - dw str_cls ,code_cls ,syn_cls ,help_cls - dw str_reboot ,code_reboot ,syn_reboot ,help_reboot - dw str_command,code_command,syn_command,help_command - dw str_mode ,code_mode ,syn_mode ,help_mode - dw str_dir ,code_dir ,syn_dir ,help_dir - dw str_refresh ,code_refresh ,syn_refresh ,help_refresh - dw str_cd ,code_cd ,syn_cd ,help_cd - dw str_mem ,code_mem ,syn_mem ,help_mem - dw str_kill ,code_kill ,syn_kill ,help_kill - dw str_int ,code_int ,syn_int ,help_int - dw str_irq ,code_irq,syn_irq ,help_irq - dw 0 +dw str_version,code_version,syn_version,help_version +dw str_cls ,code_cls ,syn_cls ,help_cls +dw str_reboot ,code_reboot ,syn_reboot ,help_reboot +dw str_command,code_command,syn_command,help_command +dw str_mode ,code_mode ,syn_mode ,help_mode +dw str_dir ,code_dir ,syn_dir ,help_dir +dw str_refresh ,code_refresh ,syn_refresh ,help_refresh +dw str_cd ,code_cd ,syn_cd ,help_cd +dw str_mem ,code_mem ,syn_mem ,help_mem +dw str_kill ,code_kill ,syn_kill ,help_kill +dw str_int ,code_int ,syn_int ,help_int +dw str_irqs ,code_irqs,syn_irqs ,help_irqs +dw str_regs ,code_regs,syn_regs ,help_regs +dw str_stack,code_stack,syn_stack,help_stack +dw str_dump,code_dump,syn_dump,help_dump +dw 0 str_exit db 'QUIT',0 str_version db 'VERS',0 @@ -588,7 +677,10 @@ str_cd db 'CD',0 str_mem db 'MEM',0 str_kill db 'KILL',0 str_int db 'INT',0 -str_irq db 'IRQS',0 +str_irqs db 'IRQS',0 +str_regs db 'REGS',0 +str_stack db 'STACK',0 +str_dump db 'DUMP',0 syn_exit db 0 syn_version db 0 @@ -602,7 +694,10 @@ syn_cd db '?',0 syn_mem db 0 syn_kill db '?',0 syn_int db 'FFh',0 -syn_irq db 0 +syn_irqs db 0 +syn_regs db 0 +syn_stack db 0 +syn_dump db '?',0 help_exit db 'Permet de quitter l''interpreteur',0 help_version db 'Affiche la version de COS',0 @@ -616,7 +711,10 @@ help_cd db 'Change le repertoire courant',0 help_mem db 'Affiche le plan de la memoire',0 help_kill db 'Termine le processus cible',0 help_int db 'Affiche des informations sur l''interruption',0 -help_irq db 'Affiche des informations sur les IRQs',0 +help_irqs db 'Affiche des informations sur les IRQs',0 +help_regs db 'Affiche les registres du microprocesseur',0 +help_stack db 'Affiche la pile systeme',0 +help_dump db 'Affiche le contenu de la memoire',0 derror db '\c04Erreur de Syntaxe !',0 error_syntax db '\c04La commande ou l''executable n''existe pas ! F1 pour %0',0 @@ -652,6 +750,7 @@ use SYSTEME,mbfree use SYSTEME,isenableirq use SYSTEME,isinserviceirq use SYSTEME,isrequestirq +use SYSTEME,savecontext use STR0.LIB,uppercase use STR0.LIB,evalue use STR0.LIB,copy