Шукаєте відповіді та рішення тестів для CA & OS (Computer Architecture) - EFREI - Fall 2026? Перегляньте нашу велику колекцію перевірених відповідей для CA & OS (Computer Architecture) - EFREI - Fall 2026 в moodle.lab.ii.agh.edu.pl.
Отримайте миттєвий доступ до точних відповідей та детальних пояснень для питань вашого курсу. Наша платформа, створена спільнотою, допомагає студентам досягати успіху!
Load and execute in step mode following program:
.dataone: .double 1.0.textmain: LDC1 f1,one(r0) ; Load value 1.0 to f1 register to avoid FPU exception nop nop div.d f2,f0,f1 syscall 0
Analyze clock cycle diagram of execution of the program and answer the question:How many clock cycles does the execution of the instruction div.d f2,f0,f1 take ?
Load and execute in step mode following program:
.textmain: mul.d f1,f0,f1 syscall 0
Analyze clock cycle diagram of execution of the program and answer the question:How many clock cycles does the execution of the instruction mul.d f1,f0,f1 take ?
Toujours en mode débogage, vous devriez voir une petite barre en bas de la fenêtre SASM avec la commande GDB. Dans le champ de texte, saisissez la commande x /32bx suivie de l'adresse contenue dans le registre eax (remplacez _____ par l'adresse) et appuyez sur Entrée.
x /32bx ____Veuillez ne pas saisir au hasard ce qui suit : cette commande est spécifique à un système d’exploitation. Remplacez plutôt le numéro d’adresse par celui que vous avez lu précédemment dans eax :
Copy & paste the command you typed to the report text box in the correct section, using the provided template.
You will receive the output - the memory dump of the interesting section, for example:
Again, copy&paste the memory dump to the appropriate section in the report as many times as needed and highlight the values according to the instructions in the template.
Préparez une déclaration du contenu mémoire représenté dans un objet .long qui contiendra un texte unique encodé en caractères ASCII, afin que vous puissiez interpréter les données comme une chaîne de caractères contenant votre nom. Ce texte peut être votre nom, votre surnom ou toute autre chaîne de caractères unique, mais veuillez vous assurer que sa longueur est d'au moins 10 caractères .
Pour une chaîne plus courte, par exemple, au lieu de définir le texte Abcdef comme ceci :
.asciz "Abcdef"nous pouvons écrire :
.long 0x64636241, 0x00006665Nous pourrons ensuite l'utiliser avec l'instruction printf et il sera imprimé comme s'il s'agissait d'un texte ASCII.
.datastring:# put here your long number declaration.long 0x64636241, 0x00006665 #.asciz "Abcdef".text.global _main_main:movl %esp, %ebp #for correct debugging# write your code herepushl $stringcall _printfaddl $4,%espxorl %eax, %eaxret
Modifiez le programme afin de définir la déclaration suivante pour la section .data :
.donnéesvariables :
.mot 0x55aa
.asciz "Texte"
.mot 0xFFFF
.ascii "Nums 0123"
.mot 0xFFFF
La directive `.asciz` permet de déclarer une variable ou une constante de type chaîne de caractères terminée par un caractère nul . La directive `.ascii` permet de déclarer une variable ou une constante de type chaîne de caractères sans caractère de fin.
De plus, si nécessaire, modifiez le programme afin qu'il se compile correctement et effectuez un vidage mémoire en mode débogage. Vous pourrez ainsi visualiser correctement le contenu de la section de données.
Comme pour l'exercice précédent, copiez-collez les fichiers de vidage mémoire et mettez en gras et soulignez les valeurs conformément aux instructions du modèle . Joignez également le fichier source .asm à titre de référence (cependant, le code source ne sera pas évalué).
Modifiez le programme afin de définir la déclaration suivante pour la section .data :
.donnéesvariables :
.tfloat 23.7
La directive `.tfloat` permet de déclarer une variable de type nombre à virgule flottante à précision étendue ( 80 bits, soit 10 octets ). Ce type de données est spécifique à l'architecture x86-32.
De plus, si nécessaire, modifiez le programme afin qu'il se compile correctement et effectuez un vidage mémoire en mode débogage. Vous pourrez ainsi visualiser correctement le contenu de la section de données.
Comme pour l'exercice précédent, copiez-collez les fichiers de vidage mémoire et mettez en gras et soulignez les valeurs conformément aux instructions du modèle . Joignez également le fichier source .asm à titre de référence (cependant, le code source ne sera pas évalué).
Copiez, collez et modifiez le programme ci-dessous :
.donnéesvariables :
.mot 0x55AA
.align 8
.quad 0xDEADCAFE87654321
.quad 0
de sorte que l'alignement du
0xDEADCAFE87654321est : 4 octets, 2 octets et 0 octet.
Si nécessaire, modifiez le programme pour qu'il se compile correctement et effectuez un vidage mémoire en mode débogage. Vous pourrez ainsi visualiser correctement le contenu de la section de données.
Comme pour l'exercice précédent, copiez-collez les vidages mémoire et mettez en surbrillance les valeurs en suivant les instructions du modèle . Joignez également le fichier .asm modifié (alignement au choix) à titre de référence (cependant, le code source ne sera pas évalué).
Toujours en mode débogage, vous devriez voir une petite barre en bas de la fenêtre SASM avec la commande GDB. Dans le champ de texte, saisissez la commande x /32bx suivie de l'adresse contenue dans le registre eax (remplacez _____ par l'adresse) et appuyez sur Entrée.
x /32bx ____Veuillez ne pas saisir au hasard ce qui suit : cette commande est spécifique à un système d’exploitation. Remplacez plutôt le numéro d’adresse par celui que vous avez lu précédemment dans eax :
Copiez et collez la commande que vous avez saisie dans la zone de texte du rapport, dans la section appropriée, en utilisant le modèle fourni.
Vous recevrez le résultat – le vidage mémoire de la section intéressante, par exemple :
Copiez et collez à nouveau le vidage mémoire dans la section appropriée du rapport autant de fois que nécessaire et mettez en surbrillance les valeurs conformément aux instructions du modèle.
Now start the debugger with the "Debug" button.
In the Debug menu please make sure that the box Show registers is checked:
Now, using Step over, move to the next instruction, and the to the ret instruction.
movl $variables, %eaxretNow you should see something similar to this:
In the Registers section, you can see what's in the internal registers of the CPU. The highlighted instruction moved the address under the variables label to the eax register. So please read that value in hexadecimal and write that value to the answer box using the provided template. Also note that value because we'll use it later.
If you use Windows it probably will be something like 0x402000, and if you use Linux then rather something like 0x804c020.Do not exit the debug session yet ;)
Now, still in the debug session, you should see a small strip at the bottom of the SASM window with GDB command. In the text box there, enter the command x /32bx and the address you have in the eax register (replace _____ with the address) and press enter.
x /32bx ____Please, do not type mindlessly what you see below - the command is specific to one of the operating systems. Instead, replace the address number with what you had read from eax before:
Copy & paste the command you typed to the report text box in the correct section, using the provided template.
You will receive the output - the memory dump of the interesting section, for example:
Again, copy&paste the memory dump to the appropriate section in the report as many times as needed and highlight the values according to the instructions in the template.