Как в system V amd64 abi поместить метку в регистр?

Если я хочу поместить метку "L0" в регистр %rbx. Например: movq $L0,%rbx;. Компилятор ругается:
/usr/bin/ld: /home/mm/function.o: relocation R_X86_64_32S against `.text' can not be used when making a shared object;
Я так понимаю где то в данных ее нужно обозначить, как это сделать?
  • Вопрос задан
  • 40 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
я хочу поместить метку "L0" в регистр %rbx.
relocation R_X86_64_32S against `.text' can not be used when making a shared object

Если это локальная метка -- то по смещению от PC:
leaq L0(%rip), %rbx
Если это метка из другой динамической библиотеки -- то через plt:
movq L0@gotpcrel(%rip), %rbx
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы