Argumentele programului MIPS în MARS (Programare, Mips, Simulator Mars)

Bryan Lopez a intrebat.

Cum pot trece și stoca două șiruri de caractere în argumentul de program furnizat către MIPS?Am căutat peste tot, dar nu știu de unde să încep.Cum aș putea ști/stoca numărul de argumente de program introduse și ce conțin argumentele șirurilor de caractere?

1 răspunsuri
Michael

The documentația oficială explică acest lucru:

Furnizați argumente de program pentru programul MIPS. Valoarea implicită este false. Nou în versiunea 3.5.
Dacă este selectată, va apărea un câmp de text în partea de sus a afișajului segmentului de text. Orice valoare de argument din acest câmp de text în momentul executării programului va fi stocată în memoria MIPS înainte de execuție.
Numărul de argumente (argc) va fi plasat în registrul $a0, , iar adresa unui array de șiruri de caractere cu terminație nulă care conțin argumentele (argv) va fi plasată în registrul $a1. Aceste valori sunt, de asemenea, disponibile pe stiva de execuție ($sp).

Această setare este disponibilă în meniul Settings (Setări) din Mars.

Comentarii

  • Vă mulțumim pentru informații. Acum sunt capabil să tipăresc numărul de argumente și adresa lui $a1, dar aș dori să tipăresc conținutul. Cum aș putea să tipăresc conținutul din adresa $a1? Am „Flex este un iepuraș” în argumentele programului. –  > Por Bryan Lopez.
  • Scrieți o buclă care lws din $a1+i*4, iar apoi treceți această valoare la print_string apelul de sistem. Repetați argc ori. –  > Por Michael.
  • Vă mulțumesc pentru sfaturile dumneavoastră. Sunt capabil să tipăresc conținutul. Acum încerc să citesc un șir binar pe 8 biți 2sc (0b0000111111) și să-l convertesc într-o valoare semnată. link Mi-am dat seama cum să fac acest lucru, dar trebuie să găsesc o modalitate de a imprima valoarea fără a utiliza anumite syscalls: 1, 5, 12, 34, 35 și 36. Este posibil să obținem un int stocat într-un registru și să îl imprimăm fără syscall-uri? –  > Por Bryan Lopez.