Есть ли опасность в использовании $gp
зарегистрироваться для хранения значения? Я предполагаю, что мой вопрос - то, что является истинной функциональностью $gp
и это вызывается закулисное так или иначе так, чтобы, если я должен был использовать его, дела могли бы идти очень очень неправильно?
Ну, регистр $ gp указывает на глобальную область. Соглашение указывает, что вы должны сохранить его при написании функции (см. .Cprestore).
Если вам нужно его использовать (честно говоря, не понимаю, почему), запомните следующее:
1) Всегда храните его в области сохраненных регистров вашего стека.
2) Всегда загружайте это значение в $ gp при уничтожении стека.
3) Не используйте это. (т.е. не обращайтесь к глобальной области видимости )
Кроме того, я не уверен, но вы можете забыть о коде PIC.