170 похожих чатов

Вспоминая одно из предыдущих обсуждений задумался: а зачем нужна промежуточная

функция puts@plt? И у меня не получается найти ответ. Кажется что это просто лишняя индирекция, потому что вместо

Dump of assembler code for function puts@plt:
=> 0x0000555555555030 <+0>: jmp QWORD PTR [rip+0x2fe2] # 0x555555558018 <puts@got.plt>
0x0000555555555036 <+6>: push 0x0
0x000055555555503b <+11>: jmp 0x555555555020

Dump of assembler code for function main:
0x0000555555555040 <+0>: sub rsp,0x8
0x0000555555555044 <+4>: lea rdi,[rip+0xfb9] # 0x555555556004
0x000055555555504b <+11>: call 0x555555555030 <puts@plt>
=> 0x0000555555555050 <+16>: xor eax,eax
0x0000555555555052 <+18>: add rsp,0x8
0x0000555555555056 <+22>: ret

можно было бы использовать просто

main:
...
call qword [reloc.puts]
...

1 ответов

9 просмотров
magras- Автор вопроса

Добавлю еще немного контекста. Речь идет о вызове внешней функции при рандомизации адресного пространства. В примере используется обычный hello world: #include <stdio.h> int main() { puts("Hello, World!"); }

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Кто-нибудь знает почему SPM клонирует репо целиком? Некоторые репы просто огромные, как та же swift-syntax которая нужна для использования макросов. Сначала подумал, что это...
iMike
6
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Карта сайта