2010-04-11 27 views
5

Czy zapisanie wartości jest niebezpieczne przy użyciu rejestru $gp? Domyślam się, że moje pytanie brzmi: jaka jest prawdziwa funkcjonalność $gp i czy jest ona wywoływana za kulisami w jakiś sposób, więc gdybym go używał, wszystko może pójść bardzo źle?

Odpowiedz

5

Cóż, rejestr $ gp wskazuje na obszar globalny. Convention oznacza, że ​​należy go zapisać podczas pisania funkcji (zobacz .cprestore).

Jeśli trzeba go używać (szczerze, nie mogę zrozumieć, dlaczego), zapamiętania tych rzeczy:

1) należy przechowywać w rejestrze dziedzinie swojego stosu zapisane .

2) Zawsze należy ładować tę wartość do $ gp podczas niszczenia stosu.

3) Nie używaj go. (tj. nie ma dostępu do globalnego zakresu)

Ponadto, nie jestem pewien, ale można zapomnieć o kodzie PIC.

+1

Dzięki za poradę! – Hristo