Главная Юзердоски Каталог Трекер NSFW Настройки

Программирование

Ответить в тред Ответить в тред
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 41 4 24
Путь к асемблеру Аноним 23/05/26 Суб 00:11:41 3711150 1
VID202604082143[...].mp4 26009Кб, 1920x1080, 00:00:10
1920x1080
Мне захотелось научиться программировать как можно ближе к машинному коду. Лет 7 назад я был веб-разработчиком некоторое время, использовал php и js. Все это было просто ради денег. Тогда это было актуально для меня.

В будущем я хочу разобраться с асемблером. Но сразу это будет сложно, поэтому сейчас я знакомлюсь с C++, мне надо писать на нем с минимальным количеством библиотек. Поэтому я начал изучать win32 api.

Что то на win32 api у меня немного получается. Но есть проблема. Я не понимаю смысл, почему в win32 api что то работает именно так или так. Потому что у меня мало знаний в области того как вообще работает компьютер и операционная система.

Встречаются мне регулярно понятия такие как - поток, ядро, дескрипторы. Иногда я представляю интуитивно что все это примерно значит, но глубокого понимания всего этого нет.

Теперь вопрос. Что мне стоит почитать, что изучить чтобы получить эти знания? Что позволит мне лучше понять почему те или вещи в win32 api и в дальнейшем в низкоуровневом программировании работают так или иначе, что именно надо учитывать.

Стремлюсь к низкоуровневому программированию ради интереса. Как то зарабатывать на этом не планирую да и просто не смогу, даже если захочу. Времени на все это у меня много. Думаю лет 10 есть.
Аноним 23/05/26 Суб 01:36:11 3711177 2
>>3711150 (OP)
Язык ассемблера в понимании winapi тебе особо не поможет.
25/05/26 Пнд 11:39:01 3712268 3
Возьми лучше Питон, попробуй на нём пописать относительно низкоуровневые штуки по типу сокетов. Попробуй написать какой-нибудь tcp-сервачок, используя модуль socket на Питоне. Передавай по нему данные. Арендуй где-нибудь vps-сервер, установи на нём свой tcp-сервак и сделай свою личную файлопомойку. Прикрути аутентификацию.
Ознакомься с потоками и процессами, распараллель эту свою tcp-шную хреновину на несколько потоков, или типа того.

Вот тебе и горы практики на полгода вперёд. После этого будешь лучше ориентироваться в системном программировании, а после этого можешь и ещё ниже углубляться.
У меня такое видение, по крайней мере. Просто своими мыслями поделился.
Аноним 27/05/26 Срд 02:15:49 3713106 4
>>3711150 (OP)
Не еби мозги и просто иди читать Столярова, дальше уже сможешь сам разобраться куда двигаться
Аноним 28/05/26 Чтв 17:24:29 3713921 5
>>3711150 (OP)
>Теперь вопрос. Что мне стоит почитать, что изучить чтобы получить эти знания?
Эндрю Танненбаум, Современные операционные системы
Столяров, как советовал анон выше
Windows Internals, Руссинович
Аноним 29/05/26 Птн 11:26:03 3714319 6
>>3711150 (OP)
>почему в win32 api что то работает именно так или так
Потому что люди которые писали эти библиотеки и функции действительно шарят, они прошли тяжелейшие испытания в виде отбора на должность. В отличии от linux, где борцун с системой в обосраных труханах возомнил себя вумным и что-то накалякал.
Ответ:
Это просто пиздато работает, пользуйся и не выёбывайся.
Аноним 29/05/26 Птн 18:20:16 3714566 7
>>3714319
В целом верно. Костяк WinAPI писали старики, что начинали инженерить ещё на компах предыдущих поколений. Но в какой-то момент такие люди, знающие винду снизу до верху, в Microsoft закончились. Часть проблем по итогу осталась не решена (пример - дефолтное ограничение полного пути файла на 255 символов). Новички, сколь пиздатыми они не были, не решаются проводить рефакторинг, боготворить их не надо.
Аноним 29/05/26 Птн 20:47:55 3714625 8
>>3714566
Как бы я не ругался на винду в целом, но winapi это идеально сделано. Да, есть недоработки вроде ограничения в 255 символов, но это такое..
Я хотел сказать, что это действительно достойный труд и он должен быть защищен и приносить этим людям прибыль, и они сами(уверен) знают цену того что они сделали.
А тут ОП(или я, неважно), а почему это работает именно так?
Да потому что не твоего ума дело(и не моего).
А то привыкли что запросто так им все дают на линуксе.
Аноним 29/05/26 Птн 21:59:31 3714657 9
> В будущем я хочу разобраться с асемблером. Но сразу это будет сложно, поэтому сейчас я знакомлюсь с C++
Толсто
Аноним 30/05/26 Суб 23:12:32 3714971 10
>>3714319
>>3714566
>>3714625

Я не знаток винапи, имел с ним дело только в вузе 12 лет назад, но разве там не какой-то пиздец? Я помню, что графическая подсистема была интегрирована в винапи, все функции принимали какое-то адское кол-во параметров и в целом все выглядело очень запутано. Когда я потом учил линукс, то минималистичность его апи выглядела очень привлекательно.
Аноним 31/05/26 Вск 00:09:24 3714989 11
>>3711150 (OP)
Почитай Кетов - внутреннее устройство Линукс. Если будет много не понятного то начни с таненбаума - современные ос. У Кетова ещё есть лекции на ютубе, но там как и в книге очень академический стиль. Это если база нужна о том как работает ос. Если хочешь ещё на уровень ниже Morris - Logic and Computer Design Fundamentals.
Если интересно как работают компиляторы почитай дракончика Compilers: Principles, Techniques, and Tools
Аноним 04/06/26 Чтв 00:43:14 3716855 12
>>3711150 (OP)
Есть классические книги по ассемблеру и программированию под win32.
По win32 - это книга Петцольда - Программирование для windows 95
А для ассемблера можешь почитать Зубкова Assembler - язык неограниченных возможностей. Или древнюю книжку Питера Абеля. Ассемблер и программирование для IBM PC. Там везде рассказываются основы.

Но про ассемблер надо понимать главное - что он аппаратно зависим. Ассемблер для x86 это одно. Для Motorola 68K, Zilog Z80, SPARC, MIPS, микроконтроллеров всяких - это всё другое. Так что изучи лучше язык Си, прежде чем соваться к ассемблерам.
Аноним 04/06/26 Чтв 00:49:07 3716856 13
>>3716855
А вообще, чтобы экспериментировать с Win32 GUI можно взять C++ Builder (скажем 6.0). Там очень удобно клепать интерфейсы. Удобнее, чем с MFC в Visual C++. MFC ты тоже можешь проштудировать. Есть книжки. На самом деле - мало кто вменяемый в те времена писал на голом Win32 API. Скорее MFC использовали.
А сейчас используют Qt какой нибудь, или wxWidgets.
Аноним 04/06/26 Чтв 00:53:17 3716859 14
>>3716855
>Зубкова Assembler - язык неограниченных возможностей
Зубкова, кстати, надо ещё поискать полную версию. То, что я находил в интернете - там усечённая версия с неполным материалом.
Аноним 04/06/26 Чтв 00:57:04 3716861 15
>>3716855
Я на ассемблере под Z80 развлекаюсь, пишу. Достал себе эмулятор компа на базе Z80, и запускаю под него мои программы. А ещё есть сайт asm80.com. Там прям в отладчике можно прогнать онлайн свою нетленку. Немножко кода какого-нибудь. Дяже ничего ставить не надо. Чисто, в блокнотике у себя на компе пишешь немножко кода, копируешь в браузер и запускаешь.
Аноним 04/06/26 Чтв 01:00:32 3716862 16
>>3716856
Кстати чтобы писать на древнем WinAPI лучше использовать Visual C++ 2008 наверное какой. Вместе с локальными библиотеками MSDN тех годов. Они ещё не настолько раскурочены, как нынешние.
Аноним 04/06/26 Чтв 01:54:49 3716871 17
>>3716862
И да - Win32 API гораздо лучше изложен именно в старых MSDN.
Аноним 04/06/26 Чтв 12:18:41 3717049 18
>>3716856
>MFC
Недалеко ушло от WinAPI, делать GUI убожество и головняк. MFC годится разве что как библиотека, для тех же строк, а GUI делали на Дельфи/C++Builder.

>>3716862
Зачем древнее WinAPI когда есть новое с новыми возможностями, старое же никуда не делось. Винда же не линукс, новое не отрицает старое.
Аноним 04/06/26 Чтв 17:46:46 3717270 19
>>3717049
Не, просто на C++ Builder ты навороченную приложуху не наваяешь. И компилятор убогонький, и баги, и вообще функционал ограниченный.
Для крутого софта нужен Visual C++. Что-нибудь из десктопных приложений масштаба MS Word, каких-нибудь 3D Studio MAX, браузер Firefox или Chrome - это всё Visual C++. С MFC или без. На C++ Builder такое не пойдёт.
Аноним 05/06/26 Птн 01:33:01 3717442 20
>>3717270
Тупые фантазии.
Мс-офис пишется майкрософт на неизвестных внутренних тулкитах.
Браузеры вообще на javascript.

Повторяю, на MFC ничего не напишешь, это портянки гемора как на винапи, бесполезный кал, можно высрать примитивный хеллоуворлд, из приложений только документная модель, диалоги делать не выйдет. Сколько-нибудь серьезное приложение пишется только на VCL, это единственное что доступно публично для работы и не говно, остальное закрыто в крупных фирмах для себя, по сути не существует. Пердольное говно вроде wxwidgets или qt даже не рассматривается, детектор пиздабола.
Аноним 05/06/26 Птн 01:56:55 3717445 21
>>3717442
На qt довольно много всего сложного написано, это один из самых популярных UI фреймворков за последние лет 10 точно.

wxwidgets реально мертвая залупа. VCL, MFC, TCL и прочее - это все кал мамонта.

сейчас гуи делается
- электрон (де факто стандарт и много лет как топ1 gui фреймворк для десктопа)
- qt (тоже стандарт)

И на этом по сути выбор кончается. Но при этом еще есть
- целая портянка из swing/awt, javafx, compose multiplatform для java/kotlin
- winforms/wpf для сишарпа + avalonia
- tauri для раста
- wails для Go
- swiftUI для swift/macos

и этот список можно продолжать бесконечно.
в любом случае, какими бы хорошими фреймворки и либы не были - кроссплатформенный UI это очень больно даже в 2026 году.
По сути ситуация стала чуть лучше с появлением электрона и прочих UI фреймворков которые тянут за собой хромиум и v8 движок где нативно рисуют хтмл/цсс/js.
Вот пока что ничего лучше хтмл/цсс/js тупо нет.

Делфи в каком-то смысле был неплох и для своих лет был крайне удобной шуткой. Другое дело что borland сдох, как и embarcadero собственно, ничего нового там уже последние лет 10 наверное не происходило, продукт тупо на поддержке живет чтобы оставшиеся старые энтерпрайз клиенты не разбежались, но в остальном судьба c++ builder, delphi, vcl де-факто давно решена.
Аноним 05/06/26 Птн 04:09:22 3717451 22
>>3717445
Взвизги повесточных пердоликов с консолью в сраке, у которых из гуёв только браузер, никому не интересны. Под шконку, шваль, тебя вообще не существует, болванчик перехрюкивающий пропаганду корпораций.
Пердолики в софте буквально фемки в играх, сами не играют, но зато визга издают много мешая людям жить.
Аноним 05/06/26 Птн 11:51:45 3717558 23
>>3717442
>Мс-офис пишется майкрософт на неизвестных внутренних тулкитах.

Прочти внимательнее, что я написал. Office пишется с применением Visual C++ с MFC или без. Если на внутренних тулкитах - то без MFC. Про это я и написал. Впрочем, ранние версии Office скорее использовали MFC, я полагаю.

>Браузеры вообще на javascript.
А про браузеры - я открываю исходники Chrome и вижу C++.

Основная моя мысль была - что на C++ Builder ты софт такого уровня не напишешь. Непосильно это.
Аноним 05/06/26 Птн 12:26:20 3717580 24
>>3717558
> на C++ Builder ты софт такого уровня не напишешь. Непосильно это.

Написать-то можно, только VCL тут скорее будет мешать, чем помогать.
Аноним 05/06/26 Птн 15:15:13 3717693 25
>>3717558
>А про браузеры - я открываю исходники Chrome и вижу C++.
Всё что нужно знать про еблана не понимающего даже на чем браузер написан. Отсюда и такие же тупорылые домыслы про "полезный MFC" и "бесполезные Дельфи/Сибилдер". Бабки на лавочке болтали, а еблан шел мимо и краем уха слышал, вот и повторяет.
Аноним 05/06/26 Птн 15:41:33 3717723 26
>>3717451
Припекло то как. Остужай.
Аноним 05/06/26 Птн 18:59:45 3717843 27
ВинАпи не такой уж ужасный. Сначала конечно туго идет, просто непривычно после консольных программ. Но преодолев себя и сделав окно, какие-то кнопки в нём, то понимаешь что сделано в принципе хорошо и ничего прям непреодолимо сложного нет. Сейчас ещё ботохуета помочь может с объяснениями.
Аноним 05/06/26 Птн 23:51:47 3717950 28
>>3717843
>>Сначала конечно туго идет
ты про свою попку?
Аноним 06/06/26 Суб 05:22:55 3717967 29
>>3711150 (OP)
> как можно ближе к машинному коду
Бери ФОРТ http://www.forth.org.ru/ язык проще некуда, очень близко к асемблеру, есть примеры на русском как писать под winapi
Аноним 06/06/26 Суб 07:23:52 3717991 30
>>3717843
>Сейчас ещё ботохуета помочь может
Но не написать весь код
Аноним 06/06/26 Суб 07:32:41 3717993 31
Screenshot4.png 55Кб, 851x314
851x314
Ботохуита запуталась в байтоёбстве
Аноним 06/06/26 Суб 10:34:45 3718031 32
Хочу учить С++ и winApi, мнение?
мимо джава господин
Аноним 06/06/26 Суб 12:30:13 3718059 33
Аноним 06/06/26 Суб 22:17:33 3718281 34
>>3717967
>очень близко к асемблеру
Где вы-дебилы нахватались этой галиматьи?
Аноним 06/06/26 Суб 22:21:02 3718282 35
>>3718031
Зачем а главное нахуя?
Аноним 07/06/26 Вск 07:11:56 3718387 36
>>3717580
Неа. Функционал того же Билдера 6.0 слабенький. Там например нет даже настройки Pre-Build, Post-Build steps. Не поддерживаются makefiles. Скудные настройки компилятора и проч. сборки.
А ещё VCL там не поддерживает Unicode. Это вообще позор.
Аноним 07/06/26 Вск 07:12:55 3718388 37
>>3717693
Ну так открой и почитай исходники Хрома, ё маё.
Аноним 07/06/26 Вск 10:43:35 3718425 38
>>3711150 (OP)
>Встречаются мне регулярно понятия такие как - поток, ядро, дескрипторы
>Windows Internals
В таких книгах про это пишут. Или про внутрянку линухов книги.
Аноним 07/06/26 Вск 11:03:16 3718433 39
HI3XX8EbgAADfcG.jpg 130Кб, 1170x1100
1170x1100
>>3711150 (OP)
>>3718425
Ну вообще там если поверхностно, то все просто:
поток - можно сказать единица исполнения. Т.е. кусок кода, расположенный в памяти и на регистрах проца. ОСь и проц, умеют жанглировать потоками - типа менять их местами, с сохрарненим данных, магически, как фокусники. Здесь не помешает понимаение выполнения ф-й на ассемблере. Все из-за регистров (стэка и других), которые нужно сохранять и восстанавливать.
ядро - ну эта сама ОСь и драйвера. Они крутится в защищенной области памяти, куда нет доступа (если не использовать дыры), обычным программам (играм и браузерам и т.п.). ОСь и дрова, имеют прямой доступ к железу. Еще драйвера, могут так поднасрать, что мало не покажется. Поэтому, опасно ставить таблетки на базе гипервизора. И поэтому на винде, можно без бубна, установить только подписанные (с соглашения m$) драйвера.
* дескриптор - любой объект ядра, имеет идентификатор - дескриптор. Файл, сокет, область памяти, семафор, мутекс, поток.. Когда ПО (браузер или видеоплеер) открывает файл, то ОСь открывает файл, а в юзерспес ПО отдает только его дескритор (handle (DWORD)). Ну и если надо в файл что-то записать или прочитать, то ПО через ф-ю, обращется к ОСи -
запись_в_файл(дескриптор, буфер_в_памяти, смещение и всякие парметры). ОСь берет находит нужный файл по дескриптору и пишет в него из памяти. Кстати, при обращении к системным ф-ям (т.е. ф-ям ОСи) происходит переключение контекста - т.е. переключение из режима юзерспеса (когда проц вертит код юзерского ПО), на режим, когда проц вертит код ядра или драйверов. Это сделано для безопасности и отжирает время. Поэтому такие расходы стараются минимизировать. Например писать в файл сразу буфер из памяти, а не по байту. Ну и есть более современные приемы.

Но если ты будешь писать прикладное ПО, глубокое понимание таких процессов, тебе пригодится, в 99% случаев, только чтобы получить одобрение, от какого-нибудь ботана, на собеседовании и вкатиться в конторку. Далее, будешь использовать популярные фреймворки по перекладыванию json-ов. :)
Аноним 07/06/26 Вск 12:17:02 3718451 40
image.png 122Кб, 937x949
937x949
>>3718425
>>3718433
>>3711150 (OP)
какие нахуй книги
гитхаб.ру/виндовс_нт_слитые_исходники
и пошёл читать как деды складывали дворды в уме и неистово ебашили событийную архитектуру
в актуальных окнах поменялось примерно нихуя
Аноним 09/06/26 Втр 15:13:56 3719438 41
>>3718433
У Зубкова в книге по ассемблеру приводится пример, как можно организовать многопоточное выполнение программ. Вот буквально приводится код, который организует жонглирование вот этими вот потоками. Манипуляции по переключению стека. Плюс приводятся сведения про всякие там организации системных вызовов ОС - все эти Гейты, Ловушки, переключения контекста и прочая. Про прерывания тоже рассказывается.
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов