|
Asm/C++/Delphi/Py/PHP/VBA
|
|
Системные вызовы и brk vs sbrk в частности10.02.2017, 02:04. Показов 6671. Ответов 24
Изучаю программинг под Linux, в частности системные вызовы
![]() Многочасовые поиски нормального справочника по системным вызовам завершились, по сути, тремя ссылками: http://linuxdoc.ru/sys-doc.html http://www.digilife.be/quickre... erence.pdf http://syscalls.kernelgrok.com/ Всё остальное - примерно то же самое, только с разным дизайном. Ну или учебник какой-нибудь о Unix в целом (хоть и на русском). Так вот, на практике придётся использовать все 3 справочника... 1. В первом находить нужную функцию и читать её описание (неплохо, что там всё по-русски). 2. Во втором находить номер функции по названию. 3. Третий использовать, когда информации из 1-го недостаточно (там расписано подробнее и кол-во функций значительно больше... и даже исходники есть). У кого есть, киньте, плиз, ссылкой на удобный, полный, структурированный справочник, в котором будут указаны (важно!) номера функций и значения констант (типа EBADF и т.д.). Что дескриптор стандартного ввода = 0, а вывода = 1 я уже понял, но сдаётся мне, есть там ещё куча подобных штук, искать которые опять же придётся в example'ах на просторах всея интернета, что не очень удобно... А если там ещё и примеры использования будут, то будет вообще супер (хотя не критично). В частности, вот такой вопрос у меня возник: brk и sbrk вроде разные функции. А номер функции (eax) как будто один и тот же... Как это может быть? В чём подвох? Или система по значению передаваемого параметра определяет (типа > 0x8000000, значит brk, иначе sbrk)?
0
|
|
| 10.02.2017, 02:04 | |
|
Ответы с готовыми решениями:
24
Системные вызовы. Получение заголовка консольного окна Brk, sbrk и прочие системные вызовы Qt и системные вызовы |
|
Заблокирован
|
|
| 10.02.2017, 02:07 | |
|
1
|
|
|
Asm/C++/Delphi/Py/PHP/VBA
|
|
| 10.02.2017, 02:16 [ТС] | |
|
nimazzzy, ну ок, как же мне её вызвать из ассемблера-то?
Мне надо скачать glibc, скомпилить и присоединить к моему .o файл sbrk.o? Или как вообще? Добавлено через 1 минуту У меня уже башка пухнет от этих заморочек, жесть какая-то...!
0
|
|
|
Заблокирован
|
|||||||||
| 10.02.2017, 02:42 | |||||||||
|
Добавлено через 5 минут Добавлено через 13 минут Так везде, на любой системе работает. Хочешь библиотечную функцию - зовешь по имени, линкуешься с библиотекой. Не хочется - пожалуйста, системные вызовы через syscall. По-другому как бы никак нигде ![]() Добавлено через 2 минуты Бессмысленный код, вызывающий sbrk:
1
|
|||||||||
|
Asm/C++/Delphi/Py/PHP/VBA
|
||||
| 10.02.2017, 11:39 [ТС] | ||||
|
nimazzzy, спасибо, всё начинает проясняться...
![]() ![]() Т.е. если я буду производить компиляцию в Linux'е, то там всё автоматом прилинкуется? Или нужно находить где-то sbrk.o и его прилинковывать ld'ом? После выделения памяти, освобождать её нужно перед выходом или нет? Кстати, где-то мельком прочитал, что в Debian (Ubuntu, значит, тоже) вызывать int 0x80 (или syscall) можно не только передав параметры через регистры, но и передав их через стек (cdecl). Если это так, как же система определяет какой именно способ я использовал? Добавлено через 22 минуты nimazzzy, у нас, видимо, какие-то разные ассемблеры (в Ubuntu). Во-первых, as использует AT&T-синтаксис, во-вторых, .globl вместо global и .extern вместо extern... И когда я линкую всё это дело, он пишет, что функции sbrk нет (undefined reference). Где её искать-то?
0
|
||||
|
Заблокирован
|
||||||||||
| 10.02.2017, 11:44 | ||||||||||
для 32, конечно, через стек.
0
|
||||||||||
|
Заблокирован
|
|||
| 10.02.2017, 11:58 | |||
|
0
|
|||
|
Asm/C++/Delphi/Py/PHP/VBA
|
|||||
| 10.02.2017, 12:15 [ТС] | |||||
![]() Добавлено через 1 минуту
0
|
|||||
|
Заблокирован
|
|||||
| 10.02.2017, 12:17 | |||||
rdi, rsi, rdx, и так далее.
Добавлено через 1 минуту
1
|
|||||
|
Asm/C++/Delphi/Py/PHP/VBA
|
||||
| 10.02.2017, 12:19 [ТС] | ||||
|
Если не подключать .h, тогда непонятно откуда брать константы (номера функций, коды ошибок и т.д.). В том же NASM'е никаких inc'ов не идёт в комплекте. В MinGW тоже... В самом линуксе (gas), правда, не знаю...
Добавлено через 1 минуту ![]()
0
|
||||
|
Заблокирован
|
|||||||||||||||
| 10.02.2017, 12:31 | |||||||||||||||
|
Добавлено через 1 минуту ![]() Добавлено через 1 минуту Добавлено через 6 минут
1
|
|||||||||||||||
|
Asm/C++/Delphi/Py/PHP/VBA
|
|
| 10.02.2017, 12:55 [ТС] | |
|
0
|
|
|
Заблокирован
|
|
| 10.02.2017, 13:50 | |
|
Jin X, спасибо, но я предпочитаю традиционный секс вызов функций ядра
0
|
|
|
Asm/C++/Delphi/Py/PHP/VBA
|
||||||||||
| 10.02.2017, 13:54 [ТС] | ||||||||||
|
А мне в ответ:
Добавлено через 54 секунды А ты говоришь... А каком файле (объектном, библиотеке, в буфете...) находится функция sbrk? Почему я не могу её одну вытащить без сишного рантайма?
0
|
||||||||||
|
Заблокирован
|
|||||||||||
| 10.02.2017, 14:17 | |||||||||||
|
Добавлено через 22 секунды Добавлено через 6 минут потому что это библиотека с набором функци. Ты с ней линкуешься. Существует статическая линковка, с .a файлом, либо вытаскиванием объектного файла из архива. Но я всячески против таких вещей.Добавлено через 7 минут На моей системе:
Добавлено через 5 минут Хочешь библиотечную функцию - линкуешься динамически с библиотекой. Не надо ничего выдумывать. Тем более, с libc, которая есть на каждом линухе.
1
|
|||||||||||
|
Asm/C++/Delphi/Py/PHP/VBA
|
||
| 10.02.2017, 14:24 [ТС] | ||
![]() Хотя, в любом случае ничто не мешает ей обратиться к какой-нибудь глобальной рантаймовской переменной. Ну да. Это ж не dll-ка... Хорошо. Если не использовать библиотеку, а использовать только brk, откуда брать исходный адрес? Посмотрел исходники sbrk.c и дальше по цепочке... там используется переменная _hurd_brk, который изначально присваивается &_end. Вот только что это за _end - непонятно. Концов не найти... Как его определить?
0
|
||
|
Заблокирован
|
||
| 10.02.2017, 14:29 | ||
|
0
|
||
|
Asm/C++/Delphi/Py/PHP/VBA
|
|||
| 10.02.2017, 14:37 [ТС] | |||
|
_end везде (во всех файлах, в которых есть это слово) объявлен как extern...
Добавлено через 1 минуту Добавлено через 1 минуту Добавлено через 3 минуты А вообще, это вроде как не libc, а glibc... нет?
0
|
|||
|
Заблокирован
|
|||||
| 10.02.2017, 15:10 | |||||
забота об адресе кучи - это загрузчика загрузчика бинарей.Добавлено через 3 минуты Добавлено через 5 минут Как я вижу по коду сискола, при невалидном адресе (например, 0 попробовать), он вернет текущее значение. Попробуй, поиграйся. И не путай сискол brk с функцией. Добавлено через 7 минут
0
|
|||||
| 10.02.2017, 15:10 | |
|
Помогаю со студенческими работами здесь
20
Системные вызовы Системные вызовы Системные вызовы Pintos системные вызовы Системные вызовы Ubuntu Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|