Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [ASSEMBLER] Problema Contenuto Memoria

    Devo risolvere alcuni esercizi di Assembler.
    Dato un programma in SPIM dire il contenuto al termine dell'esecuzione delle Word con indirizzo ind e ind+4

    Il primo programma è questo:

    .data
    ind: .word 0,0,0,0,0,0
    .text
    li $t0, 0
    li $t1, 6
    la $t2, ind
    loop: beq $t0, $t1, FINE
    sw $t1, 0($t2)
    addi $t0, $t0, 2
    addi $t2, $t2, 8
    j loop
    FINE:

    Qualcuno mi potrebbe dire il contenuto e spiegare cosa succede nei vari passaggi??? Ringrazio da subito chiunque risponda

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    16
    le prime istruzioni non le conosco

    li $t0, 0 dovrebbe stare per "load immediate" e assegna il valore 0 (in questo caso) al registro $t0
    www.beppegrillo.it

  3. #3
    Per quello che ho capito io, vengono allocati 6 spazi di memoria, 6 word da 32 bit.

    Nella guida allo spim che ho, il comando .word viene descritto così:
    .word w1, ..., wn
    Store the n 32-bit quantities in successive memory words

    Vengono assegnati i valori 0 a $t0 e 6 a $t1

    Il comando "la" carica in $t2, il valore dell'indirizzo ind , ma non il suo contenuto (se non sbaglio)
    (la Rdest, address - Load computed address, not the contents of the location, into register Rdest.)

    Poi parte un ciclo che fa da contatore, e il ciclo termina quando $to è uguale a $t1, cioè a 6 (il confronto lo fa con il beq).
    Poi con "sw" scrive il contenuto di $t1, nell'indirizzo 0, però non capisco cosa sta a significare il ($t2) tra le parentesi.
    Poi fa due somme immediate, e fa un jump all'inizio del ciclo per ricontrollare la condizione.

  4. #4
    Nessuno sa rispondere al mio quesito???


    Quello che non capisco cosa possa andare a scrivere se non c'è alcun immissione di dati (non c'è alcuna syscall)

    In particolare, la relazione principale del programma dovrebbe essere tra queste due righe
    la $t2, ind

    sw $t1, 0($t2)

    Il $£t2 tra le parentesi mi sembra di ricordare che indichi lo spizzamento, cioè da dove deve iniziare a scrivere, ma è questo il punto che non capisco

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.