[OSy] chyba v kalistu -- sys.S, 509, 510 ?

Zdeněk Doležal zdenek.dolezal at gmail.com
Tue Oct 23 17:27:13 CEST 2007


Zdravim jeste jednou,

jsem si snad z 99% jist, ze mam pravdu a ze zminena chyba v sys.S je.

Spravny zapis, ktery vezme ze zasobniku hodnotu status registru si ji
prvne ma ulozit na temporary registr t0 vyuzivany k vypoctu a nasledne
pomoci mtc0 ulozit. Nikoliv vyuzivat registr a0, ktery je urcen k
necemu jinemu a ktery touto operaci nespravne prepisuje. Je to
analogie k ukladani status registru, kde je t0 vyuzivan rovnez a kde
je to spravne.

lw      $t0, OFFSET_STATUS($sp)
mtc0    $t0, $status

ZD

On 10/23/07, Zdeněk Doležal <zdenek.dolezal at gmail.com> wrote:
> > Doufam, ze neinterpretuji spatne to, co pisete, ale zkuste si precist
> > stranku 2 "MIPSpro Assembly Language Programmer's Guide". U registru a0
> > je napsano "values are not preserved across procedure call" ..
>
> To je pravda. Ale mne ho do registru natahuje RESTORE_GENERAL_REGS $sp
> ze zasobniku daneho vlakna a pak se teprve provadi prvni volani
> (mluvim ted o uplne prvnim prepnuti na dane vlakno) pomoci jumpu.
>
> Mezitim se tedy provadi ona operace prepsani registru a0 -- proc?
>
> Pokud bych dany registr nechtel vyplnit a nezaobiral se zadnymi
> argumentami v zasobniku, tak je volane funkci predan nejaky argument z
> a0, ktery tam vlastne ani nechci. To mne prijde divne.
> --
> S pozdravem
> Zdenek Dolezal
>


-- 
S pozdravem
Zdenek Dolezal


More information about the NSWI004 mailing list