Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Assembleur ne gère pas les données fournis via un label #3

Closed
7 tasks
LBF38 opened this issue Oct 28, 2022 · 1 comment
Closed
7 tasks

Assembleur ne gère pas les données fournis via un label #3

LBF38 opened this issue Oct 28, 2022 · 1 comment
Assignees
Labels
bug Something isn't working wontfix This will not be worked on

Comments

@LBF38
Copy link
Owner

LBF38 commented Oct 28, 2022

La majorité de l'assembleur est fonctionnelle (pour ne pas dire la totalité). Cependant, avec le code ci-dessous qui est censé afficher "Hello World!" 5 fois, je ne sais pas comment gérer les données.

# print 5 times "Hello, world!"
    add r2 r0 nb_iter      # r2 <= @nb_iter
    load r3 r2 0            # r3 <= mem[r2 + 0]
    add r4 r0 0             # r4 <= 0
loop_for_start:
    slt r5 r4 r3            # r5 <= (r4 < r3) ? 1 : 0
    braz r5 loop_for_end    # if (r5 == 0) {PC <= loop_for_end}
    add r20 r0 my_string   # r20 <= @my_string
    scall 4                 # print string @r20 to stdout
    add r4 r4 1             # r4 <= r4 + 1
    jmp r0 loop_for_start   # PC <= @loop_for_start
loop_for_end:
    stop                    # halt the machine
nb_iter:
    5                       # data: number 5
my_string:
    "Hello, world!\n"       # data: null terminated string

Le nb_iter est bien géré. Seul le my_string n'est pas bien géré.

Ainsi, j'ai identifié deux problèmes que je réunis ici car ils sont intrinsèquement liés :

  • Reconnaître et stocker les données sous forme de string. (comme la partie my_string ci-dessus) => partie assembleur
  • Reconnaître et fournir la string lors du décodage dans la VM. => partie VM.

A fixer :

  • scall 4
  • reconnaissance des data sous forme de string
  • décodage des data sous forme de string
  • stockage au bon endroit dans la mémoire
  • appel via scall 4
@LBF38 LBF38 self-assigned this Oct 28, 2022
@LBF38 LBF38 added the bug Something isn't working label Oct 28, 2022
LBF38 added a commit that referenced this issue Nov 21, 2022
Fixes #3

Résolu. Juste ajouté une reconnaissance des données numériques dans l'assembleur.
Attention quand on réalise un code assembleur à bien utiliser le load pour les data
Le principe du mini-MIPS est de faire des opérations entre registres.
Donc, attention à la programmation en assembleur pur. Peut engendrer des erreurs même si tout fonctionne.
@LBF38 LBF38 closed this as completed Nov 21, 2022
@LBF38
Copy link
Owner Author

LBF38 commented Nov 21, 2022

Trop compliqué de gérer les données sous forme de string

@LBF38 LBF38 added the wontfix This will not be worked on label Nov 21, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working wontfix This will not be worked on
Projects
None yet
Development

No branches or pull requests

1 participant