x86-64
мозги у людей, правда, императивно работают
Если тебя изначально к императиву приучили
Человек-Даук
надо было сдавать на бумаге+нужно прои написании загрузчиков
Anonymous
подход в хаскелле математичен
Dmitry
не, я к тому, что в жизни, в бытовой практике, ты мыслишь императивно ты же думаешь "пойду, в общем, сейчас в продуктовый магазин, куплю там хлеба и молока, а потом зайду в магазин одежды, куплю себе штаны." ты же не думаешь "вернусь домой с хлебом и молоком купленным в продуктовом магазине и штанами купленными в магазине одежды"
Anonymous
в хаскелле, вообще, по-другому мыслишь, твой пример некорректен
Dmitry
я вообще про функциональность
Dmitry
не, функциональный подход он заебись
Dmitry
просто мозг напрягать нужно :)
Anonymous
в хаскелле так: "Мне нужно купить себе штаны, хлеб и молоко. Хорошо, чтобы купить штаны - я зайду в магазин одежды. А чтобы купить хлеб и молоко - я зайду в продуктовый. Главное, четко определить, что где. Вот теперь можно и сходить"
x86-64
Вы еще Пролог вспомните
Dmitry
короче я тут накатал длинную телегу, которая была призвана объяснить разницу, как я её понимаю, между императивным и функциональным программированием, но как-то кривовато вышло, поэтому я её стёр :) ну суть-то в том, что ты мыслишь последовательно в бытовой жизни а в функциональном программировании ты сначала определяешь все под-действия, затем определяешь программу как сумму действий, которая уже через под-действия раскрывается
Anonymous
только правильнее сначала как раз определить программу, как сумму действий
Anonymous
а потом уже действия на поддействия разделить
Anonymous
а потом уже реализовать все
x86-64
Да какая разница, какой подход, императивный, функциональный, логический, в любом случае нужно знать соответствующие азы.
x86-64
Надеюсь, дискретку и матлогику не прогуливал? Тогда и его сдашь
Anonymous
Надеюсь, дискретку и матлогику не прогуливал? Тогда и его сдашь
А это были мои любимые предметы в третьем семестре
Anonymous
классные темы
Anonymous
в отличие от ТФКП, теории вероятности и операционного счисления
⸙ꠋꠋk̹̺ Seymøur
не о правилах вызова речь?stdcall,cdecl,thiscall,etc?
🦥Alex Fails
Я тоже подумал о них
Jumpcode
А по вызову syscall (x86-64) в обработчике происходит переключение на kernel stack? Нашел код обработчика в linux, но не разобрался там
Jumpcode
Не очень понял, что ты ищешь. Есть win32 api и вызовы к нему через C++ runtime library
🦥Alex Fails
Сырцы msvcr8, 9,... естт в поставке студии
x86-64
Не очень понял, что ты ищешь. Есть win32 api и вызовы к нему через C++ runtime library
Можно и без нее, если знать прототипы экспортируемых функций в DLL и их соглашения о вызовах
🦥Alex Fails
Если точнг известно, что мсвц, то напиши простенький класс, откомпиль приложуху с ним и отреверсь
x86-64
А ecx это что? Уже C++ ABI как-то стандартизовали, чтобы this лежал именно в ecx?!
x86-64
В смысле соглашение о передаче параметров? Стандартное для x86 - все параметры на стеке. Регистры используют кто во что горазд.
x86-64
eax, edx, ecx вроде, не?
x86-64
Да срать мне на мокрософт семь куч, я говорю про стандарт вообще. Таблица виртуальных методов - это вообще черт знает что.
x86-64
Да. Но на x86-64 мелкомягкие вроде тоже на стандарт (rdi, rsi, rdx, rcx, r8, r9) вроде тоже болт положили.
x86-64
Без понятия, я не пользуюсь их компиляторами. В gcc и clang есть еще куча соглашений о вызовах, на любой вкус.
x86-64
У dll'ек виндовых они тоже разные, например, одни чисият стек перед возвратом, а другие - нет
🦥Alex Fails
эмпирические наблюдения
Jumpcode
@ia_32 Можешь пояснить? по вызову syscall (x86-64) в обработчике происходит переключение на kernel stack? Нашел код обработчика в linux, но не разобрался там
🦥Alex Fails
вроде они заопенсорсили часть Msbuild
Dmitry
а в каких виндовых библиотеках кроме CRT стек перед возвратом НЕ чистится?
Dmitry
ну если не брать функции которые , ...); - их по-другому кроме как cdecl не сделаешь
x86-64
@ia_32 Можешь пояснить? по вызову syscall (x86-64) в обработчике происходит переключение на kernel stack? Нашел код обработчика в linux, но не разобрался там
Само собой разумеется, при переключение в кольцо 0 стек переключается на стек кольца 0, но в случае syscall это делается программно, насколько я помню, сама syscall стека не переключает
x86-64
аппаратно не переключает, я нагуглил
Значит программно переключают, использовать непривелигированный стек привелигированным кодом как-то некошерно, а при использовании SMAP вообще нельзя.
x86-64
В gcc есть куча атрибутов, и вроде виндовые стандарты поддерживаются, по крайней мере у меня получалось вызывать dll-ные функции чисто макросами
x86-64
cdecl, stdcall, regparm(x) прддерживаются, fastcall вроде тоже
x86-64
Так вроде стандарты для вызовов существуют для всех известных мне архитектур, только на x86 царит полный бардак. Вполне можно и структуры застандартить.
x86-64
Там была инструкция swapgs. Зачем GS перключать?
При чем тут gs и стек? gs вроде для быстрого нахождения тредовых данных используется. Хотя для этого и esp прекрасно подходит, но его еще маскировать надо, а это потеря тактов
Jumpcode
это не нужно
Jumpcode
@forklog есть
Evgenii
Астрологи объявили месяц сессий. Количество просьб о срочной помощи выросло втрое
Evgenii
Как и мое разочарование в образовании
Dan
Как и мое разочарование в образовании
В образовании я уже давно разочарован. Есть учителя, но нет школы
Evgenii
монетизируй, а не плачь
Деньги это не всё
Evgenii
монетизируй, а не плачь
Так то это можно сказать о любой жалобе
Denis
Кто-нибудь знает чат, посвященный ядру Linux? Где был бы шанс получить ответ на вопросы о драйверах и т.д.?
Anonymous
Если такого чата ещё нет то мб стоит создать? я бы был только за, правда это слишком специфическая тема, вряд ли много народу там будет что-то действительно про внутреннее устройство кернел обсуждать
Anonymous
Ссылку пожалуйста
🦥Alex Fails
+
Anonymous
@proKernel
JeisonWi
Не переходит
Anonymous
Вижу
Anonymous
Чето я не так сделал
Anonymous
https://t.me/joinchat/AAAAAEHV88rnSKUfLBIYEw
Nr
Сразу говорю, я нуб. Мне дана формула r=(a+b-d)*(d-b)/b. Умножение и деление необходимо реализовать через сложение и вычитание соответственно. Погуглил, нашёл самый подходящий вариант здесь через сдвиг разряда влево (на деле 2^n, как я понял) "shl ax,1". https://courses.engr.illinois.edu/ece390/books/artofasm/CH09/CH09-6.html Однако нужно через сложение и вычитание со знаками. Что посоветуете? org 0x100 ;begin address a dw 50 b dw 8 d dw 4 mov ax, [a] mov bx, [b] mov dx, [d] mov cx, 0 ;бесит ненулевое значение в afdpro, отношения далее не имеет jmp res res: add ax, [b] sub ax, [d] ;первая скобка sub dx, [b] ;вторая скобка shl ax, 1 ;*2 shl ax, 1 ;*2 sub ax, [b] ;хуёво реализованное деление ret
Nr
Забыл написать, что я использую. nasm, afdpro, DosBox.
Nr
А если без шуток?
cyber
без шуток тока на сбер
IZh
Всем привет. Кто-нибудь разбирался с виндовыми драйверами, ACPI и wake timer'ами?
🦥Alex Fails
x86-64
Забыл написать, что я использую. nasm, afdpro, DosBox.
Нафих досбокс? Кому нужно в 2017 году изучать 16-битные коды? Они нужны только если какой-нить код инициализации писать.
Ask
Sub ax.. деление.. На бумаге напиши сначала какие действия будут , без асма
x86-64
Деление делается вычитаниями-сдвигами-сравнениями, курс арифметики из начальной школы.