Calculer l’expression en assembleur

la programmation


Je dois calculer l’expression donnée
F= (A+B)^2*CA
sur une machine à adresses 0,1,2,3.
J’ai besoin d’aide pour une machine à adresse 0, et si le code des autres machines est correct ?

Ce que j’ai essayé :

0 address machine
     Need help ??????

   1 address machine
       LOAD A
       ADD B
       STORE TEMP
       MUL TEMP
       MUL C
       SUB A
       STORE F

   2 address machine
       MOVE F, A
       ADD F, B
       MUL F, F
       MUL F, C
       SUB F, A

     3 address machine
       ADD F, A, B
       MUL F, F, F
       MUL F, F, C
       SUB F, F, A

Solution 1

Même si nous sommes plus que disposés à aider ceux qui sont bloqués, cela ne signifie pas que nous sommes là pour tout faire à votre place ! Nous ne pouvons pas faire tout le travail, soit vous êtes payé pour cela, soit cela fait partie de vos notes et il ne serait pas du tout juste pour nous de tout faire à votre place.

Nous avons donc besoin de vous pour faire le travail et nous vous aiderons lorsque vous serez bloqué. Cela ne veut pas dire que nous vous donnerons une solution étape par étape que vous pourrez nous proposer !
Commencez par expliquer où vous en êtes actuellement et quelle est la prochaine étape du processus. Ensuite, dites-nous ce que vous avez essayé pour que cette prochaine étape fonctionne et ce qui s’est passé lorsque vous l’avez fait.

Pour le moment, nous devons faire des hypothèses sur vos différentes “machines” qui peuvent être correctes ou non – je comprends plusieurs assembleurs du monde réel qui sont destinés à des processeurs (ou familles de processeurs) spécifiques et ils fonctionnent tous de différentes manières : un code qui fonctionne pour l’un échouera gravement dans un autre. Vous devez lire ce que votre tuteur vous a donné comme “définition du code machine” pour chacun de vos “types de machines” afin d’obtenir un code fonctionnel pour eux. Bien qu’il semble que vos trois codes devraient fonctionner, cela implique des hypothèses assez importantes qui peuvent ne pas être valides pour vos machines virtuelles.
Par exemple, au moins deux des familles de processeurs du monde réel pour lesquelles je peux coder n’ont pas du tout d’instruction de multiplication, et l’une d’entre elles a une exécution conditionnelle pour chaque instruction ! Le code assembleur de ceux-ci serait très différent de vos exemples !

Si vous rencontrez des difficultés pour démarrer, ceci peut vous aider : Comment écrire du code pour résoudre un problème, guide du débutant[^]

コメント

タイトルとURLをコピーしました