реклама на сайте
подробности

 
 
> Позиционно независимый код.
VictorsProg
сообщение Oct 26 2016, 09:26
Сообщение #1





Группа: Участник
Сообщений: 6
Регистрация: 8-10-16
Пользователь №: 93 664



Доброго времени суток.

Помогите разобраться с PIC кодом.
На сколько я понял, адресно-независимый код (Position Independent Code, PIC) может быть
скопирован в любое место памяти без изменения и затем выполнен.

я написал маленький код
Код
#include "b1.h"
int aa;
int a1 (){
        int i =0;
        i=b1();
        i++;
        return i+aa;
}


Скомпилировал его
Код
so:
        $(CC)   -nostartfiles -pie -shared a1.c -o a1.so


Дизассемблер показал
что вызов функции b1() по конкретному адресу 250
Код
0000023c <.plt>:
23c:   e52de004        push    {lr}           ; (str lr, [sp, #-4]!)
240:   e59fe004        ldr     lr, [pc, #4]   ; 24c <a1-0x10>
244:   e08fe00e        add     lr, pc, lr
248:   e5bef008        ldr     pc, [lr, #8]!
24c:   000080f4        strdeq  r8, [r0], -r4
250:   e28fc600        add     ip, pc, #0, 12
254:   e28cca08        add     ip, ip, #8, 20 ; 0x8000
258:   e5bcf0f4        ldr     pc, [ip, #244]!; 0xf4

Disassembly of section .text:

0000025c <a1>:
25c:   e92d4800        push    {fp, lr}
260:   e28db004        add     fp, sp, #4
264:   e24dd008        sub     sp, sp, #8
268:   e3a03000        mov     r3, #0
26c:   e50b3008        str     r3, [fp, #-8]
[b] 270:   ebfffff6        bl      250 <a1-0xc>[/b]
274:   e50b0008        str     r0, [fp, #-8]
278:   e51b3008        ldr     r3, [fp, #-8]
27c:   e2833001        add     r3, r3, #1
280:   e50b3008        str     r3, [fp, #-8]
284:   e59f3018        ldr     r3, [pc, #24]  ; 2a4 <a1+0x48>
288:   e5932000        ldr     r2, [r3]
28c:   e51b3008        ldr     r3, [fp, #-8]
290:   e0823003        add     r3, r2, r3
294:   e1a00003        mov     r0, r3
298:   e24bd004        sub     sp, fp, #4
29c:   e8bd4800        pop     {fp, lr}
2a0:   e12fff1e        bx      lr
2a4:   00000000        andeq   r0, r0, r0


Я не понимаю, как этот код будет работать если его сместить в другой адрес?


Прикрепленные файлы
Прикрепленный файл  load_so_electronix.7z ( 3.91 килобайт ) Кол-во скачиваний: 6
 
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 20:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.0137 секунд с 7
ELECTRONIX ©2004-2016