|
0 / 0 / 0
Регистрация: 01.06.2019
Сообщений: 9
|
|
NASM Mmap, malloc, обращение к одному и тому же массиву30.10.2021, 16:25. Показов 2579. Ответов 8
Метки нет (Все метки)
1. Надо мне считать файл (любой). Как его отобразить на память. Файл может быть и гигабайт 10, но столько физической памяти у меня нет. Прочитал, что его можно отобразить на память, но мне нужен пример, не понимаю, как это сделать (массив mem)
2. После обработки данных формируется другой массив, write, меньше по размеру исходного файла. Мне на следующей итерации надо чтобы в команду lea rax, [mem] подгрузился адрес начала массива write. Тоже нужен пример 3. lea rax, [mem] - в rax - текущий элемент массива rax mov rax, 1 - в rax - точно не первый элемент массива. Как через lea правильно сначала обратиться к 34487 элементу массива [mem], а затем к 7654 элементу массива. Или лучше через mov (как, нужен пример)?
0
|
|
| 30.10.2021, 16:25 | |
|
Ответы с готовыми решениями:
8
Обращение к одному и тому же классу из разных классов
|
|
Модератор
|
|||||||||||||
| 30.10.2021, 16:58 | |||||||||||||
mmap()https://pubs.opengroup.org/onl... /mmap.html https://www.man7.org/linux/man... map.2.html https://linux.die.net/man/3/mmap
len - размер проецируемых данныхsome_offset - от начала файла до данныхmem - "статический" массив, для которого пространство резервируется при компоновке, а индекс 34487 известен во время ассемблирования:
rax адрес 34487 элемента массива.
0
|
|||||||||||||
|
0 / 0 / 0
Регистрация: 01.06.2019
Сообщений: 9
|
|
| 01.11.2021, 14:11 [ТС] | |
|
для первой итерации чтение - mmap файл (mmap в массив mem)
запись - массив write для второй итерации - чтение из массива write, запись в массив mem для третьей - чтение из mem, запись в write lea rax, [mem], загрузит в регистр адрес массива mem, a lea rax, [write] загрузит в регистр адрес массива write Вот для чётных итераций надо, чтобы lea rax, [mem] грузил массив write, а lea rax, [write] грузил в регистр адрес массива mem. Как сделать?
0
|
|
|
0 / 0 / 0
Регистрация: 01.06.2019
Сообщений: 9
|
|
| 02.11.2021, 18:06 [ТС] | |
|
По последнему вопросу ответили в чате ассемблерщиков в телеграме.
Есть ещё один вопрос - сколько тактов процессора занимает extern malloc/extern free (примерно)?
0
|
|
|
Модератор
|
|
| 04.11.2021, 07:28 | |
|
arego, без учёта самой реализации free() и malloc()?
Вы можете оценить самостоятельно и измерить для Вашей машины, зная, какие инструкции используются для передачи аргументов, вызова и возврата в исходное состояние.
0
|
|
|
0 / 0 / 0
Регистрация: 01.06.2019
Сообщений: 9
|
|
| 04.11.2021, 12:33 [ТС] | |
|
Замеры скорости работы malloc'а на Windows и Linux - вот такое нашёл по malloc.
А вот как в насме реализовать mmap и malloc - пока не понял. Добавлено через 2 часа 2 минуты https://codereview.stackexchan... m-assembly - вот здесь хорошо расписаны системные вызовы для работы с файлами, а вот как сделать mmap и malloc похожим способом - не могу сообразить.
0
|
|
|
Модератор
|
|||||||||||||||||
| 05.11.2021, 10:18 | |||||||||||||||||
|
arego, пример по ссылке для 32-разрядного linux.
В x86_64 другой ABI. См., например, закреплённую тему раздела Системные вызовы в Linux
https://man7.org/linux/man-pag... lls.2.html https://man7.org/linux/man-pages/man2/mmap.2.html
Кликните здесь для просмотра всего текста
Если хотите выполнять какой-либо syscall самостоятельно, нужно знать его номер, параметры, возвращаемое значение, и как он сообщает о возможных ошибках.
0
|
|||||||||||||||||
|
0 / 0 / 0
Регистрация: 01.06.2019
Сообщений: 9
|
|||||||||||
| 05.11.2021, 16:21 [ТС] | |||||||||||
а malloc реализуется через sys_brk примерно так
0
|
|||||||||||
|
Модератор
|
|||||||||||||
| 06.11.2021, 08:54 | |||||||||||||
PROT_NONE. Точно так же, как и с другими символическими обозначениями, такими как rdx или mov.
int 128 нужно только для взаимодествия с (устаревшим) 32-разрядным кодом.64-разрядный linux имеет право его вообще не обрабатывать, если при сборке была отключена совместимость с 32-разрядным linux.
Нормальная 64-разрядная программа для linux x86-64 должна использовать инструкцию
0
|
|||||||||||||
| 06.11.2021, 08:54 | |
|
Помогаю со студенческими работами здесь
9
Как сделать чтобы обращение к одному и тому же сайту происходило быстрей в FireFox 48.0.2 Обращение к одному массиву как к массивам с разной размерностью
Как обратиться к одному и тому же запросу Malloc (выделение памяти двумерному массиву) - проверить код Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|