[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]

No.32929 Reply
File: ss-(2013-07-05-at...
Png, 5.64 KB, 456×59
edit Find source with google Find source with iqdb
ss-(2013-07-05-at-05.37.07).png
File: 2000_-_asctrix178...
Gif, 22.68 KB, 640×480
edit Find source with google Find source with iqdb
2000_-_asctrix1780.gif
File: qoob_demoscene_mo...
Jpg, 51.51 KB, 500×453
edit Find source with google Find source with iqdb
qoob_demoscene_modeller_02.jpg

Привет, анон.
Совсем недавно я был причислен к слоупокам я узнал о существовании такой вещи как демосцена. Это дало мне толчок для изучения ассемблера. В данный момент я умею только вызывать некоторые системные функции Win32 на FASM, то есть совсем ничего не умею.
Итак, анон, мне нужны понятные уроки для работы с ассемблером, а лучше всего, с графикой на ассемблере, желательно, чтобы они были датированы нашим тысячелетием. Приветствуются советы и напутствия мудрого анона. Может быть стоит заняться чем-нибудь более полезным? Уверен, я не дойду до стадии, когда смогу писать завораживающие интро размером 64Кб, но в любом случае знания не должны пропасть даром.
Подари мне мечту, доброчан.mp3
>> No.32931 Reply
>>32929
www.democoder.ru
>> No.32932 Reply
>>32929
Сто лет уже не пишут ничего на асме, может какие-то мелкие участки, но даже и это сомнительно.
Да и конпелятор лучше тебя в асм сконпелит. Так что садись за всякие си лучше.
>> No.32933 Reply
>>32931
Забавный сайт.
> Следующей вашей задачей будет отыскать картинку, которая вам нравится. Нет, я имею в виду не этих милых японских девочек на вашем хард-диске, а настоящие картины.
>>32932
> Сто лет уже не пишут ничего на асме
Я бы так не сказал. Во-первых, очень часто пишут код для контроллеров именно на асме. Во-вторых, приведу в пример ОС Колибри, написанную на FASM. Да и вообще это just for fun.
> садись за всякие си лучше.
Конечно я осваиваю в данный момент плюсы с OpenGl. Смотрю пока здесь http://www.opengl-tutorial.org
>> No.32934 Reply
>>32933
Тебе не про плюсы а про няшную >>32932-кун сказал, и я тащем-та его поддерживаю.
От себя могу предложить глянуть низкоуровневые языки для видеокарт. Работа со всякими CUDA и шейдерами через HLSL. Должно получиться интересно и полезно.
>> No.32943 Reply
>>32929
> интро размером 64Кб
Их на с/плюсах пишут, и даже в таком случае, 64К - это огромная куча свободного места. На асме ты несколько лет писать будешь, чтобы забить их кодом.
>>32932
> Да и конпелятор лучше тебя в асм сконпелит
Это заблуждение. И чем меньше программа, тем сильнее отрыв человека.
>> No.32944 Reply
>>32943
> > Да и конпелятор лучше тебя в асм сконпелит
> Это заблуждение. И чем меньше программа, тем сильнее отрыв человека.
Наверное, смотря, что за человек. Если он не знает структур данных и алгоритмов, тонкостей оптимизации под кеш, архитектуру процессора, векторизацию, параллельность, сложность алгоритмов, то уж конечно от компилятора толку больше. Всякие там BLAS, собственно компиляторы, которые не с неба падают, эмуляторы архитектуры какой-нибудь используют таки ассемблер. Но местные индусы думают, что это касается только профессоров с западного полушария и только они могут этим заниматься.
>> No.32945 Reply
>>32944
Лол, ты-то знаток всего, инженер-неиндус. Ну пободайся с последними сишками да порадуй нас профилями.
>> No.32946 Reply
>>32945
А ты хоть видел ассемблерный код, который генерирует MSVC или, не к ночи будь помянут, gcc? Это же жуть.
>> No.32947 Reply
>>32946
Я фанател по асмам после з80 и уже на х86 с начала 00-х было видно, что ручное дрочерство уже обставили, и чем больше наворачивают архитектуру, тем больше оно отстает. Сейчас и говорить нечего.
Но посмотреть на чужие потуги я всегда готов, так что дерзай.
>> No.32948 Reply
>>32945
Нет, я вовсе не знаток, но говорить, что асм вообще никому не нужен, мне кажется, тянет на введения человека в заблуждение. Кое-где нужен же. И я не противник абстракции как некоторые тут.
>> No.32949 Reply
>>32948
В местах, где он действительно нужен или без него не обойтись, и при нужной квалификации исполнителя он нужен, но это единицы процентов и с развитием всего даже эти единицы сокращаются.
>> No.32951 Reply
>>32947
> с начала 00-х было видно, что ручное дрочерство уже обставили
И, наверное, поэтому все тайм-критикал куски до сих пор выдрачивают вручную на асме.
> так что дерзай.
Да зачем? Всё сделано до нас.
http://blog.lexa.ru/2012/12/26/opyat_o_sovremennykh_cpu.html
http://blog.lexa.ru/2011/09/01/o_kompilyatorakh_i_protsessorakh.html
http://blog.lexa.ru/2011/08/27/o_legacy_i_formatakh_dannykh.html
Ещё на форуме фасма что-то такое было. Приятного чтения.
>> No.32955 Reply
>>32951
> все тайм-критикал куски до сих пор выдрачивают вручную на асме.
Примеры доставь, если не сложно. Сейчас все серьезные проекты кроссплатформенны, что практически исключает асмовставки.

Блоги почитаю. 2011-2012 весьма интересьненько, хотя и перегибы в нужную сторону практически неизбежны, думаю.
>> No.32956 Reply
>>32955
Delphi, юнит System - там ассемблер сплошь и рядом. Правда, равняться на говнокодеров из Borland я б не стал - кромешный и адовый пиздец, который творится в их VCL, выдаёт их квалификацию с головой.
>> No.32957 Reply
>>32956
Дельфи умер лет десять назад. Я про современные активные проекты.
>> No.32958 Reply
>>32957
id Tech, например.
>> No.32959 Reply
>>32957
А мужики-то не знают: http://www.embarcadero.com/ru/products/delphi
>> No.32960 Reply
>>32958
Да ну, айдишное добро всегда конпилировались под любые холодильники, какой там асм? Да и завяли он лет пять назад, на днях вот директор ушёл, кстати.

>>32959
Иди расскажи мужикам из коммунистичской партии, что коммунизм умер тридцать лет назад.
>> No.32961 Reply
>>32960
> Иди расскажи мужикам из коммунистичской партии, что коммунизм умер тридцать лет назад.
Иди лучше ты расскажи многочисленным софтварным компаниям, что дельфа мертва, и все написанные на ней программы нужно срочно переписывать на современных языках, а старые версии прекращать поддерживать. Хочешь, я угадаю, куда тебя пошлют?
>> No.32962 Reply
>>32961
Не переписывают, потому что взять дельфидеда на поддержку нафталина дешевле, чем переписать.
Когда все вымрут, тогда и перепишут.
>> No.32963 Reply
>>32962
Спорим, ты ни разу не писал ничего сложнее хелловорлдов с объёмом максимум тысяч в пять строк?
> потому что взять дельфидеда на поддержку нафталина дешевле, чем переписать.
Значит, я в свои 24 года тоже стал дельфидедом? Okay.jpg
>> No.32964 Reply
>>32963
Давай не будем меряться проектами, это слишком по-детски.
> я в свои 24 года тоже стал дельфидедом.
Таки да. Я уже сто лет не видел тз, в котором было бы ДЕЛЬФИ, только поддержка. Да и любой жаба или сишарп индусик захавает твоего дельфи-заказчика с потрохами, ему же без разницы.
>> No.32965 Reply
>>32964
> Давай не будем меряться проектами, это слишком по-детски.
Значит, ты и в самом деле не представляешь, каково это - переписывать проект объёмом хотя бы в полмиллиона строк компилируемого кода с дельфи на какой-нибудь современный язык (например, C# или C++). С тобой всё ясно, вопросов больше не имею.
>> No.32966 Reply
>>32965
То есть, попробовали переписать с помощью индусов, которые не справились, поэтому вернули тебя поддерживать нафталин и ты возгордился?
Или ты не смог переписать на что-то более актуальное?
>> No.32967 Reply
>>32966
Я занимаюсь переписыванием с дельфи на C#, попутно поддерживая старую версию. Объём старого проекта - 700к строк компилируемого кода. Никаких юнит-тестов нет, только методика тестирования для тестеров, покрывающая в лучшем случае процентов 30 функций программы. Процесс переноса идёт уже чуть больше года.
>> No.32968 Reply
>>32967
Ну а что же ты спорил про дельфидедов тогда, если сам занимаешься уничтожением наследия дельфи?
>> No.32969 Reply
>>32968
До уничтожения ещё далеко, а ворошить говно приходится до сих пор. Глупо говорить о том, что язык мёртв, если поделиями на нём до сих пор пользуются.
>> No.32970 Reply
>>32969
Пользуются легаси и поддерживают старые поделки. Нет активных проектов = язык мертв.
Спорить вообще не о чем.
>> No.32971 Reply
>>32970
А с чего ты взял, что активных проектов нет?
>> No.32972 Reply
>>32971
С того, что и их нет.
С чего можно взять, что нет проектов на фортране или там фокале?
>> No.32975 Reply
>>32972
> С чего можно взять, что нет проектов на фортране
Совсем, что ли, обалдел? Фортран используют дял всеких численных расчётов на всяких там супер-компьютерах! Интеловцы продолжают улучшать свой компилятор фортрана. На фортранете у него проектов нет, посмотрите на него.
>> No.32976 Reply
>>32975
А про фокал чего не рассказал? Такие-то проекты на фокале, судьбу человечества решают.
Что ты как маленький? Умер твой школьнй ололо-паскаль-делфи, щито поделать.
>> No.32977 Reply
>>32972
У тебя есть чудесная база, в которой записаны все-все проекты, и ты сделал по ней поиск и убедился, что проектов на дельфи нет?
>> No.32978 Reply
>>32977
Мне позвонил Обама и сказал, что делфи теперь для дедов.
>> No.32979 Reply
>>32976
Перечитай пост. Паскаль умер, фортран используют для расчётов, про фокал я ничего не знаю. "Мой школьнй ололо-паскаль-делфи" мне не интересен.
>> No.32980 Reply
>>32979
Суть была не фортране конкретно, а в том, что 90% языков умирают, а живут те, которые актуальны.
Чего было влезать крокодилу на защиту фортрана вообще удивительно.
>> No.32994 Reply
File: error.png
Png, 20.37 KB, 880×184 - Click the image to expand
edit Find source with google Find source with iqdb
error.png
>>32929
Тред плавно перетекает в срач, а я продолжаю любоваться демками. :3
Моё настроение сейчас может передать Dreamchild от ASD.
За это время было найдено и начато несколько туториалов по C и OpenGL. Пишу в Sublime text 2, компилирую с помощью MinGW, выдает ошибку - пикрелейтед, и это в коде, где указаны лишь инклуды OpenGL и пустая функция main. IDE, где все настроено, использовать не хочу, ибо заебали. Когда-то я должен был задать этот нубский вопрос, ибо он мешает развиваться. А демку я напишу, не скоро, но напишу.
>> No.32997 Reply
>>32994
Исходник в сту на http://pastebin.com.
>> No.32999 Reply
>>32997
Да нечего тут показывать-то. http://pastebin.com/Kxp0AcUF Хеадеры лежат на своих местах.
>> No.33017 Reply
File: 2145_131566678777.jpg
Jpg, 802.59 KB, 1818×2188 - Click the image to expand
edit Find source with google Find source with iqdb
2145_131566678777.jpg
>>32999
А либы ты слинковал? Оно не находит реализацию ф-ий. Потому что их у тебя нет в твоём exe-шнике. Зато они есть в библиотеке GLUT. Линкуй библиотеки. GL и GLUT линкуй. Makefile для этого напиши. Удобнее же будет с Makefile Переходить с Makefile на CMake и прочие потом будешь.

В манах кстати написано как линковать файлы. Если не ошибаюсь это -L опция. Поэтому маны по g++/gcc/make/MinGW лучше читни. Лучше, чем меня слушать.

SDL кстати лучше тебе использовать. Лучше чем GLUT. Ибо он убог этот GLUT. В сравнении с SDL.

А ещё глянь http://steps3d.narod.ru/ Имхо годнота.
Вот ещё. Но это по сугойным 1k/4k ибо туда меньше впихнёшь чем в 64k свои
http://habrahabr.ru/post/134551/
http://habrahabr.ru/post/143766/
>> No.33018 Reply
File: нафталиновый-дед.jpg
Jpg, 203.53 KB, 690×845 - Click the image to expand
edit Find source with google Find source with iqdb
нафталиновый-дед.jpg
>>33017 >>32999
Не знаю как демосцена чувствует себя сейчас - ведь появилось множество разных архитектур, айфон, айгугл там, андроидос, линукс, но в мою бытность, ни о каких глютах или сдлах и речи идти не могло - пользоваться желательно было только тем, что было в стандартном виндовсе (амиге). И байтик каждый экономили (ну, в 1к и 4к по крайней мере, 64к это уже больше для алгоритмистов и компрессорщиков было) и знали куда можно данных в PE optional header затолкать, и как окошко без CreateWindowClass нарисовать (40-50 байтов экономии было) чтобы и запускалось и место экономилось. Люди, занимавшиеся подобными делами безусловно достойны похвалы за свой талант и усердие.

Потом-то понятное дело популярность пришла, появились не только те, кто байты ювелирными щипчиками перекладывает, но и разного рода организаторы, журналисты, тусовщики. Элита пыталась от них отгородиться писала разгромные статьи в езиносах, но социального процесса это не остановило.
>> No.33019 Reply
File: QUIET-DON-7.jpg
Jpg, 44.04 KB, 640×480 - Click the image to expand
edit Find source with google Find source with iqdb
QUIET-DON-7.jpg
>>33018
> Люди, занимавшиеся подобными делами безусловно достойны похвалы за свой талант и усердие.
Дед, знаешь, вот никто просто так не возьмется свой опыт передавать, нужно самому добывать знания. Но это - крайне специфичная штука, до которой - как до луны.
В принципе, в данный момент всё равно, куда скатилась демосцена. За себя воюем.
А вообще что-то есть. Конкурсы идут, встречи устраиваются, всё идёт своим чередом.

>>33017
Каюсь, библиотеки не слинковал, думал об этом, но ничего не предпринял.
> SDL кстати лучше тебе использовать. Лучше чем GLUT.
Почему-то ни разу не натыкался на использование SDL. Глут ругали за то что закрытый и старый, но это решалось подключением FreeGLUT.
Спасибо, мил человек. Обмозгую советы и отпишусь в ближайшие несколько дней.
>> No.33022 Reply
Посмотрел crinkler, интересно. Файл, правда, запускается через раз, но оно может работать на семёрке, при том, что заголовок он насилует даже сильнее чем я. Может встречал кто-нибудь описания, что он с заголовком делает? Я видел только про упаковщик. Дизассемблить очень не хочется.
>> No.33025 Reply
File: megadeath.jpg
Jpg, 104.48 KB, 900×654 - Click the image to expand
edit Find source with google Find source with iqdb
megadeath.jpg
>>33019
Вот тебе хорошая статейка http://www.labinsk.ru/sevendump/releases/bitl/incube01.zip
Называется Tyler Durden OpenGL tutorial.
>> No.33026 Reply
>>33025
У него не очень хороший тутор. Сплошное "сделайте так же как и я" посыпаное петросянством. Да и приёмы у него широко известные. Не знаю, тот ли это архив или нет, но там есть папка /bonus/ - единственное, что представляет интерес, но нет никаких объяснений, как это сделано. Если в новый опенжл так уж не хочется лезть, то лучше уж NeHe.
>> No.33027 Reply
>>33026
> Сплошное "сделайте так же как и я" посыпаное петросянством
Мне как раз и понравилось, что все как раз там по делу и достаточно компактно. А петросянство в погоне за знанием можно и пережить.
>> No.33028 Reply
File: sample-810283e67ae9652db9703d3a730843ca.jpg
Jpg, 391.23 KB, 850×1174 - Click the image to expand
edit Find source with google Find source with iqdb
sample-810283e67ae9652db9703d3a730843ca.jpg
>>33025
Если это туториал OpenGL на FASM, то я знаю, о чём речь. Но мне он тоже не понравился, как и >>33026 - куну. Тайлер вообще ничего не объясняет. В конце концов я забил на попытки разобраться в том, что он написал и попытался целиком скомпилировать его код. В результате - куча ошибок, которые непонятно как исправить.

>>33026
> Если в новый опенжл так уж не хочется лезть, то лучше уж NeHe.
Мне не хочется изучать устаревшие технологии. Этим NeHe уже все уши проели, но если и изучать OpenGL, то версии 3.3 и выше.
>> No.33041 Reply
>>33018
> Люди, занимавшиеся подобными делами безусловно достойны похвалы за свой талант и усердие.
Похвала - за пользу, качество и эффективность даётся. За что им похвала?
>> No.33043 Reply
File: mr.-montblanc.jpg
Jpg, 32.21 KB, 460×345 - Click the image to expand
edit Find source with google Find source with iqdb
mr.-montblanc.jpg
>>33041
> > Люди, занимавшиеся подобными делами безусловно достойны похвалы за свой талант и усердие.
> Похвала - за пользу, качество и эффективность даётся. За что им похвала?
Для ответа на этот вопрос сперва следует понять, что является целью деятельности участников т.н. "демосцены". О промышленном применении результатов их работы, ровно как и о конверсии каких-либо технологий между демосценой и промышленным программированием, разумеется, речи и идти не может. Потому как для промышленного программирования основными показателями будут трудоэффективность и предсказуемость временных и материальных затрат, в то время как для демосцены ценен лишь "эпотажный, идеальный результат любой ценой". Исключением из этого правила может быть разве что отрасль систем защиты программных продуктов от взлома, да индустрия маленьких и очень юрких экзешников.

Сравнение демосцены со спортивным программированием также не имеет под собой каких-либо оснований, прежде всего из-за отсутсвия четких, объективных критериев оценки деморабот. Поэтому для демосцены представляется трудным создание каких-либо автоматизированных систем для проведения конкурсов, какие во множестве есть для любителей спортивного программирования: acm.timus.ru, spoj.pl, project euler и пр.

Представители демосцены - это художники компьютерного мира, со всей их анархичностью, неизмеримостью и неформатностью, и спрашивать с них необходимо ровно то же, что и спрашивается с остальных деятелей искусств. Художник, создавая свое очередное произведение создает прежде всего идею, символ, который должен вдохновлять обывателя на развитие в каком-либо определенном направлении. Продукты деятельности демосценеров предназначены конечно же для других программистов, остальные по-просту не оценят результат. Одно, четырех и 64-х килобайтные файлы писаны для того, чтобы рядовой промышленный программист смог увидеть некий, реально существующий идеал, к которому можно стремиться.

Оптимизировать зависимости и ужимать продукт в какие-то ничем необоснованные размеры на работе ему все равно никто не даст, но в трудные моменты, когда речь заходит о том, реализовывать ли вообще некую, достаточно сложную возможность или отказаться и просесть по качеству, примеры демосценерской отваги должны служить хорошую службу.

Так польза, качество и эффективность демосценерских работ и выражается - в их способности вдохновлять. Если кого-то конкретного они не вдохновляют - у него несть неотчуждаемое право, не признавать ценности демосцены.
>> No.33052 Reply
>>33043
Ну ты и высрал. На кафедре студентам будешь такие речи толкать.
Демки нужны для того, чтобы показывать их работодателям. И ВСЁ.
>> No.33060 Reply
>>33052
А жизнь человеку дается для того, чтобы дышать воздухом порядка 40-80 лет. Не прикидывайся дураком, доброчан же.
>> No.33063 Reply
>>33052
На дваче будешь так разговаривать. Веди себя интеллигентнее.
>> No.33070 Reply
>>33063
ты мне двач сначала запили
>> No.33071 Reply
File: 3221027.jpg
Jpg, 17.38 KB, 300×225 - Click the image to expand
edit Find source with google Find source with iqdb
3221027.jpg
Итак, я обещал написать, когда что-то получится.
За это время был освоен Cmake и запущен GLUT. Все работает, теперь можно Творить™.
SDL прикрутить не смог. Использовал документацию и комментарии на их официальном сайте, даже находил темы десятилетней давности, где обсуждалась такая же проблема. Странное чувство. Целых 10 лет и такая же проблема.
>>33043
С Вами я абсолютно согласен. Однако джентльменов стойсамой_доски не остановить.
>> No.33380 Reply
>>32929
Анончик, разъясни, пожалуйста, как работать с шейдерами OpenGL. Пишем на GLSL. Так вот, я вообще не пойму, что за кучу кода мне представляют и как она должна работать. http://ru.wikibooks.org/wiki/OpenGL_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%[...]ogram
В новом OpenGL без них вообще ничего не нарисуешь. Подкиньте чтива по этому вопросу.
>> No.33408 Reply
>> No.36996 Reply
Ну что же вы, давайте писать на ассемблере.
Этот прекрасный код:
.section .data
  .equ  BUFF_LEN, 256
greeting:
  .ascii "С праздником тебя "
  .equ greeting_len, . - greeting
question:
  .ascii "Введи своё имя: "
  .equ question_len, . - question
buff:
  .rep BUFF_LEN
  .byte 1
  .endr
  
.section .text
.globl _start
.type _start,@function
_start:
  pushq %rbp
  movq  %rsp, %rbp
  
  pushq $question_len
  pushq $question
  call write
  subq  $16,%rsp
  
  call read
  
  pushq $greeting_len
  pushq $greeting
  call  write
  subq  $16,%rsp
  
  pushq %rax
  pushq $buff
  call write
  subq  $16,%rsp
  
  movq  $60,%rax
  movq  $0,%rdi
  syscall
  
.type write,@function
write:
  pushq %rbp
  movq  %rsp,%rbp
  
  xorq  %rax,%rax
  inc   %al
  xorq  %rdi,%rdi
  inc   %dl
  
  movq  16(%rsp),%rsi
  movq  24(%rsp),%rdx
  
  syscall
  
  movq  %rbp,%rsp
  popq  %rbp
  
  ret
  
.type read,@function
read:
  pushq %rbp
  movq  %rsp,%rbp
  
  xorq  %rax,%rax
  xorq  %rdi,%rdi
  movq  $buff,%rsi
  movq  $BUFF_LEN,%rdx
  
  syscall
  
  movq  %rbp,%rsp
  popq  %rbp
  
  ret
>> No.36999 Reply
File: 1322615842122.jpg
Jpg, 20.49 KB, 400×400 - Click the image to expand
edit Find source with google Find source with iqdb
1322615842122.jpg
>>36996
> прекрасный код
Какая гадость этот ваш at&t.
>> No.37000 Reply
>>36996
Это какое-то расширение css?
>> No.37001 Reply
>>36999
Уж получше вашего intel с обратным расположение источника и приёмника. Вообще маразм.

>>37000
Это просто программка ни к чему не относящаяся.
>> No.37022 Reply
>>37001
Почему нельзя было сделать так?
rax := rbx
rsp := rsp - 16
>> No.37065 Reply
>>37022
Потому что это уже не ассемблер будет. Не видно конкретных команд.
>> No.37200 Reply
>>37065
Первая строка - явный mov. Во второй посложнее, но если переписать как rsp -= 16, то всё очевидно.
Алсо, почитать в тему http://board.flatassembler.net/topic.php?t=14768
>> No.37204 Reply
>>37022
Так неудобно и не интуитивно буде. Для всех таких вещей няшный придумали же.
> :=
Это ты из паскаля притащил?
>> No.37351 Reply
>>37204
> Так неудобно и не интуитивно буде.
Привыкнуть. К дебильным мнемоникам мне тоже приходилось привыкать. А так сразу приучатся к нормальной математической нотации.
> Для всех таких вещей няшный придумали же.
Няшный — уже ЯП высокого уровня. А нужен именно нормальный низкоуровневый.
> Это ты из паскаля притащил?
Нет, это способ отличать сравнение, возвращающее bool, от (пере-)присвавания, возвращающего вроде как монаду.
>> No.37361 Reply
>>37351
> к нормальной математической нотации.
> ассемблер
Что ты понимаешь под "математической нотацией"? Математических описаний пекарни есть две штуки, ни в одном никакого := и в помине нет.
>> No.37362 Reply
>>37351
> Няшный — уже ЯП высокого уровня.
Как там в шестидесятых?
> возвращающего вроде как монаду
Щито, простите? Монада -- это тайпкласс, если что.
>> No.37374 Reply
>>37361
> Математических описаний пекарни есть две штуки
Покажи!!!
>>37362
> Как там в шестидесятых?
Вот и выросло поколение, не знающее терминологии.
> Монада -- это тайпкласс, если что.
И что? Я не могу сказать «на дереве растут фрукты», обязательно должен указывать, яблоки это или груши?
>> No.37393 Reply
Вообще, на асме пишут два типа людей. Первым надо оптимизировать какое-то узкое место (либо сделать что-то, что даже сисечка не может), вторым просто нравится. И тут оказывается, что такая "высокоуровневая" запись становится не нужна. Первым ребятам нужен контроль за байтиками и инструкциями, а конструкции вида eax+=(ebx+4)­*­ecx>>2|edx++, написать которые будет вполне естественным желанием, уже непонятно во что оттранслируются. А вторым нужен асм, иначе они писали бы на ц.
Опять же, проблема не в мнемониках, ибо они просты и понятны, и на деле ежедневно используется всего двадцать, или около того, команд, проблема в "геморройности" написания программ. То есть, например, если тебе надо вывести сообщение об ошибке, то ты сначала скроллишь вверх (или вниз), пишешь там 'szErrorLoadFile db "Error load file",0', потом скроллишь обратно и продолжаешь писать. Это раздражает. Так же, иногда нужно просто быстро что-то набросать, но вместо этого ты начинаешь думать, как вернуть строку из функции и должна ли функция аллочить память, или её стоит туда передать.
>> No.37394 Reply
>>37374
> Покажи!!!
Нагуглить, что такое машина Тьюринга и лямбда-исчисление сам сможешь? Да, операции присваивания нет ни там, ни тут. А если тем более оторваться от computer science, то с точки зрения математики присваивание -- вообще полная ересь, x = x + 1, ага. Так что с "математической нотацией" у тебя вышел прокол: это не "математическая нотация", а клеймо мёртвого дельфина.
> Вот и выросло поколение, не знающее терминологии.
Не бушуй, дед, с шестидесятых даже терминология уже слегка изменилось. Кроме того,
> The terms high-level and low-level are inherently relative. Some decades ago, the C language, and similar languages, were most often considered "high-level", as it supported concepts such as expression evaluation, parameterised recursive functions, and data types and structures, while assembly language was considered "low-level". Today, many programmers might refer to C as low-level, as it lacks a large runtime-system (no garbage collection, etc.), basically supports only scalar operations, and provides direct memory addressing.
> И что? Я не могу сказать «на дереве растут фрукты», обязательно должен указывать, яблоки это или груши?
Во-первых, в определении монады никакого присваивания тоже нет. Там есть связывание и инъекция, всё. Короче, я не понимаю, зачем ты приплёл сюда это красивое слово. Ну и "возвращать монаду" означает "возвращать тайпкласс". Не знаю, может в dependent-typed языках такое и можно, но мы вроде про ассемблер говорили. Так никто не говорит.
>> No.37429 Reply
>>37394
> машина Тьюринга
Нет, ты мне описание x86 покажи! А хотя ладно, не надо.
> то с точки зрения математики присваивание
это либо обычное введение новой переменной с shadowing-ом старой, либо переписывание контекста (Г). Вот чтобы его отличать от привычного «let x = …», и придумали такую запись.
> Во-первых, в определении мона
OK, тебя не переспоришь, она возвращает измененное состояние машины (конкретно, переписанный регистр или измененная ячейка памяти).
>> No.38355 Reply
За неимением треда помощи напишу сюда. Я пишу на NASM и никак не могу понять, как работает вычисление адреса, в том числе lea. Вроде бы как в этих скобочках можно использовать только bx и всякие сегментовые/индексовые регистры. Я пишу:
mov dword [fact + 32 * bx - 32], 1 Это даёт invalid effective address. fact - массив dword, я же в нужном месте размер указал операции? В других случаях он на него и ругался.
>> No.38357 Reply
>>38355
Я не спец по асму, но кое-что покритикую.

Начнем с того, что ты не можешь множить или додавать что-то кроме циферок прямо внутри скобочек. Т.е., это должны быть отдельные операции, в результате которых получаешь указатель на нужный тебе элемент. При этом сначала ты берешь указатель на начало, а потом двигаешь его вперед.

Почему ты множишь на 32? Инфа 99%, что перемещение не побитное, а побайтное.

Ну и вообще рекомендую в АСМе писать все функциями. Т.е., эмитировать си-стайл вызовы функций, когда ты пушаешь данные в стек и вызываешь функцию. С ними АСМ становится не таким диким пиздецом, потому что без них тупо не хватает регистров для хранения всей нужной инфы, а с ними можно занимать столько стека, сколько нужно.
>> No.38389 Reply
>>38355
Я уже точно не помню, но, по-моему, на 32 умножать нельзя. А ещё в выражении могут быть только регистры. А ещё все смещения в байтах. А ещё вычитать не надо.
mov ax, fact
mov dword [ax + bx * 4], 1 ; подразумевая, что в bx индекс элемента
Опять же, я не помню, можно ли тут ax использовать, потому что на 16-битном писал один раз всего.
lea работает точно так же:
lea ax, 0xffff ; поместить в ax число 0xffff
lea ax, [bx * 4] ; взять значение из bx, умножить на 4 и поместить в ax
>> No.38510 Reply
>>38389
>>38357
Чаю вам, но только одну чашку. Как выяснилось, пользоваться можно только регистрами, но как угодно, умножения, вычитания. Разве что умножать только на степень двойки можно. И да, 32 это у меня размер строки массива, так что всё ок.
Насколько я понял, этот пример с lea==mov некорректен. В первом lea должно быть lea ax, [0xffff].
>> No.38604 Reply
>>38510
Хех, надо же было так облажаться. Всё-таки моё увлечение высокоуровневым говнецом оставило след.
>> No.38758 Reply
Есть у кого доки по программингу на первый PlayStation? Ну асм там, периферия и т.п. Не спрашивай зачем оно мне надо. Я и сам не знаю, лол.
>> No.39255 Reply
File: -.png
Png, 19.27 KB, 409×279 - Click the image to expand
edit Find source with google Find source with iqdb
-.png
$nasm -f elf a.asm -o hello
./hello
bash: ./hello: cannot execute binary file: Ошибка формата выполняемого файла
====================================
Подскажите, пожалуйста, что я могу делать не так? ELF же точно,
> $ uname -a
Linux arch 3.14.4-1-ARCH #1 SMP PREEMPT Tue May 13 16:44:54 CEST 2014 i686 GNU/Linux
> hello: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped
>> No.39256 Reply
>>39255
Подозреваю, что это только объектный файл, теперь надо слинковать.
>> No.42553 Reply
File: 3.png
Png, 17.34 KB, 272×430 - Click the image to expand
edit Find source with google Find source with iqdb
3.png
>>32929
Пикрилейтед, что я делаю не так? call заносит в стэк CS и IP, уже после того, как в него занесли 1, 2, 3, 4. Однако успешно выйти из процедуры не выходит.
>> No.42630 Reply
>> No.42631 Reply
>> No.42824 Reply
Дайте какую-нибудь задачку, уровня хэловорд + 1.
>> No.42825 Reply
>>42824
Напиши baremetal helloworld. То бишь на голом железе.
>> No.42827 Reply
>>42553
Какой формат, досовский exe?
Со стеком ты напортачил. Смысл инструкций push ds / xor ax, ax / push ax тебе понятен?
>> No.42910 Reply
>>32929
>>38357
Когда писал на ассемблере лабы в вузе то выстроил для себя правила:
1. Писать функциями. Функциональной чистоты можно не придерживаться
2. Не бояться записывать какие-либо переменные в память (по ссылке)
3. Не бояться пользоваться функциями FPU. Операции с действительными числами невозможны в ассемблере без дополнительного ХОРОВОДА
4. Не хранить переменные в регистрах общего назначения ax, bx, cx, dx. В них только временные результаты
5. Не пользоваться конструкциями вида repne cmpsb.
6. Пользоваться вызовами WinAPI, ибо однажды можно доиграться с функциями bios и схватить ePrivilegedInstruction. Да и вообще, нужно ориентироваться на то, чтобы запускать свой код под 32-разрядной Windows
Ставь лойс если ты хотя бы однажды получил ePrivilegedInstruction когда писал что-нибудь на ассемблере
>> No.42954 Reply
>>37429
Вставлю свои пять копеек. Знание ассемблера, безусловно, довольно полезная вещь. Программист должен более-менее понимать, как работает машина. У меня у самого есть несколько знакомых, программирующих на Haskell и умещающих в голове одновременно и сложную математику и понимание того, как это всё работает на машинном уровне. Эти люди осознают, что для компьютера монады -- это просто числа (а точнее -- поля), и что вся магия их любимого типизированного лямбда-исчисления является просто красивой обёрткой над примитивной работой с регистрами и памятью.
На этом знакомство с ассемблером должно заканчиваться. Программирование -- это не погоня за призрачной скоростью, а проектирование сложных систем. Опытный программист на ассемблере мыслит в тех же категориях, что и опытный программист на нормальных языках, вот только нормальные языки куда лучше выражают концепции из области конструирования ПО, о которых говорили ещё Абельсон и Сассман.
P.S.
Все мои знакомые, занимавшиеся демосценой, сейчас работают в лучшем случае сисадминами.
>> No.42959 Reply
>>42954
> Все мои знакомые, занимавшиеся демосценой, сейчас работают в лучшем случае сисадминами.
Взял и поделил на ноль всю мотивирующую пасту.
>> No.42963 Reply
>>42954
>>42959
Зачем вообще этот диванобаян тут нужен? Охуеть просто. Как обычно, одни детские игры и хиханьки-хаханьки на уме.
>> No.42997 Reply
>>42910
> 1. Писать функциями. Функциональной чистоты можно не придерживаться
Слишком сильно мельчить на функции все же не стоит, а то ОПТИМИЗАЦИИ не будет
> 3. Не бояться пользоваться функциями FPU. Операции с действительными числами невозможны в ассемблере без дополнительного ХОРОВОДА
Да ладно? А как же SSE2? http://www.godevtool.com/TestbugHelp/XMMfpins2.htm
К тому же оно быстрее работает(правда там точность может быть ниже).
> 4. Не хранить переменные в регистрах общего назначения ax, bx, cx, dx. В них только временные результаты
Если писать на ассемблере, в котором этих регистров общего назначения 32 или около того, то хранить вполне можно. Да и если взять x86-64, там уже достаточно много регистров
> 5. Не пользоваться конструкциями вида repne cmpsb.
Это еще почему? Скорость? Если например взять rep movsb, то скорость на современных интел процессорах у него нормальная http://habrahabr.ru/company/intel/blog/133962/
> 6. Пользоваться вызовами WinAPI, ибо однажды можно доиграться с функциями bios и схватить ePrivilegedInstruction. Да и вообще, нужно ориентироваться на то, чтобы запускать свой код под 32-разрядной Windows
Нужно ориентироваться на то, чтобы не писать на ассемблере код, который бы вызывал какие-то API или системные вызовы операционной системы или биоса. А писать только всякую специфическую фигню, которую компилятор C или C++ оптимизирует плохо. Как это например делают в FFmpeg:
https://github.com/FFmpeg/FFmpeg/search?l=gas
https://github.com/FFmpeg/FFmpeg/search?l=nasm
И вызывать этот код из C. Таким образом этот код на ассемблере можно использовать в разных ОС на одной архитектуре.
Есть еще всякая системная ерунда, которая на C тоже не может быть написана(например если надо выставить значение отладочных регистров, запись в и чтение из портов) но ничего этого из ring 3 не задействовать. Но это только если у вас стоит какая-то ОС. А если ОС нет или DOS вместо OS, то вполне можно писать такую фигню на ассемблере, переключать процессор из реального в защищенный (или даже 64-битный) режим итд... Кстати вот есть такая ОС http://www.returninfinity.com/baremetal.html работает только под x64, там все ring 0 работает, к тому же она еще однозадачная(хотя например может на каждое ядро по процессу может запускать) и на ассемблере написана
>> No.43003 Reply
>>42997
> Нужно ориентироваться на то, чтобы не писать на ассемблере код, который бы вызывал какие-то API или системные вызовы операционной системы или биоса. А писать только всякую специфическую фигню, которую компилятор C или C++ оптимизирует плохо. Как это например делают в FFmpeg:
А как же вирусы?
>> No.43006 Reply
>>43003
Вирусы вообще не стоит писать
>> No.43007 Reply
>>43006
А как же компиляторы, эмуляторы, оси, драйвера и т.п.?
>> No.43008 Reply
>>43006
Почему? Это ведь приличный доход. Хотя ты прав, намного проще писать какой-нибудь локер или троян на С*.
>> No.43010 Reply
>>43007
> А как же компиляторы
Бессмысленно. Чтобы компилятор генерировал код на ассемблере, писать сам компилятор на ассемблере не нужно.
> эмуляторы
Смотря какие. Целиком писать их на ассемблере смысла нет
> оси
Только машинно-зависимую часть. Остальное лучше на C. Тогда ось будет портабельной
> драйвера
Драйвера в большинстве случаев нормально на C пишутся. Если их на асме писать, можно забыть о работе под другими архитектурами.
Вот под какие-нибудь слабые микроконтроллеры что-то писать на асме это вполне норм
>> No.43011 Reply
>>43008
Какой может быть доход от написания вируса? Продавать от него антивирус?
>> No.43012 Reply
>>43011
Лол, сейчас 99% малвари пишется для извлечения дохода.
Вымогательство денег, спам, ддос, воровство паролей от всяких платежных систем, майнин биткоина, всякие инжекты рекламы и редиректов в страницы и прочее.
>> No.43013 Reply
>>43012
Классический вирус ничем подобным не занимается. Если встраивать в вирус подобный функционал, это уже не вирус будет
>> No.43014 Reply
>>43013
Ну вот нахуя, блядь, нужно это лексическое значение твоего "классического вируса", а? У тебя, естественно, нет источников вроде учебников или словарей, чтобы доказать, что оно правильное. Как и аргументов в его пользу. Но ты всё равно будешь использовать наименее популярное значение. Ты понимаешь, что всё, чего ты добиваешься, - это исключительно подрыв коммуникации и ничего больше? Ты считаешь, что это умно?
>> No.43015 Reply
>>43014
Подрыв коммуникаций получается как раз тогда, когда к категории вирусов причисляют всякие криптолокеры, кейлоггеры, червей и троянов. На обычном вирусе, который просто заражает файлы, заработать можно только если продавать к нему антивирус. На вопрос "Что такое компьютерный вирус и чем он по функционалу отличается от троянов, червей и проч?" можно легко найти ответ, воспользовавшись поисковыми системами, например Google, Yandex. Там источников достаточно
>> No.43016 Reply
>>43015
Ты словоблуд и отклоняешься от сути. Хорошо, я переформулирую ответ - ассемблеры нужны для писания малвари с целью заработать шекели. Всё?
>> No.43017 Reply
>>43015
Ну вот я и воспользовался. И знаешь что? По википедии вирус - программа которая может воспроизводить свой собственный код. Даже есть определение на машине Тьюринга(Не воспользуюсь её знанием на работе, так хоть тут!). Ну и при чём тут грёбаные файлы? Малварь, знаимающаяся ддосам, может распостраняться через флешки, воспроизводя свой код, так что это вирус. Q.E.D.
> Компьютерный вирус — вид вредоносного программного обеспечения, способного создавать копии самого себя и внедряться в код других программ, системные области памяти, загрузочные секторы, а также распространять свои копии по разнообразным каналам связи с целью нарушения работы программно-аппаратных комплексов, удаления файлов, приведения в негодность структур размещения данных, блокирования работы пользователей или же приведения в негодность аппаратных комплексов компьютера.
Слово "файлы" есть только в словосочетании "удаление файлов"!!!

Где!? Где твоё определение с файлами! Я требую словари, энциклопедии, учебники, научные работы и лекции! Где они, блядь!? Давай их сюда.
>> No.44906 Reply
Что означают числа в названиях функций MessageBox@16 и ExitProcess@4?
Что означает imp_ в названиях? Где про все это можно прочитать?
>> No.44947 Reply
>>44906
@16 это число байт, пропихиваемое в стек при вызове функций для передачи аргументов для определенных соглашений вызова. См http://www.agner.org/optimize/calling_conventions.pdf enwiki://X86_calling_conventions enwiki://Name_mangling#C_name_decoration_in_Microsoft_Windows
> In the stdcall and fastcall mangling schemes, the function is encoded as _name@X and @name@X respectively, where X is the number of bytes, in decimal, of the argument(s) in the parameter list (including those passed in registers, for fastcall). In the case of cdecl, the function name is merely prefixed by an underscore.
__imp это import https://stackoverflow.com/questions/11236789/what-is-the-difference-be[...]d-imp
>> No.44948 Reply
>>44906
> Где про все это можно прочитать?
В интернете об этом инфа есть, надо просто уметь гуглить. Попробуй гуглить на английском. Могу еще понакидать каких-нибудь примеров на асме, и примеров как можно вызвать код на асме из кода на Си используя компилятор mingw-gcc под виндой. Со студиями я не работаю
>> No.44950 Reply
>>43017
> Где!? Где твоё определение с файлами! Я требую словари, энциклопедии, учебники, научные работы и лекции! Где они, блядь!? Давай их сюда.
> способного создавать копии самого себя и внедряться в код других программ
А как ты предлагаешь внедряться в код других программ, если ФАЙЛОВ нет? Инжектиться в уже работающий процесс, да?
>> No.44951 Reply
>>44950
Господи, еле вспомнил, о чём я вообще писал тогда, пол-года уже прошло. Ты посмотрел, на что был это ответ? Чувак сказал, что если ПО делает ещё что-то кроме заражения файлов, то это не вирус. На вике написано, что может массу других вещей за одно делать, одновременно самокопируясь. А он сказал, что "классический вирус" только самокопируется и ничего больше, даже заработать на нём нельзя. Да ещё добавил, что определение "классического вируса" есть ну просто везде. Ты прочёл предыдущие посты вообще?
>> No.44952 Reply
>>44951
Прочитал. Какой-то бесполезный терминологический спор. Классический-неклассический, да какая к черту разница? Вон возьмите например файловые вирусы, объявите что файловые вирусы это классические, и будет вам "классические вирусы это те, которые заражают файлы". Нет никакой общепризнанной классификации вредоносного ПО. Нет общепринятого определения вируса.
Лучше б чем-нибудь полезным занялись
>> No.44953 Reply
https://blog.kaspersky.ru/klassifikaciya-vredonosnyx-programm/2200/ вот например
> Вирус. Если просто, то это самовоспроизводящийся программный код, который внедряется в установленные программы без согласия пользователя.
Чтобы вирусу внедриться в установленные программы, надо их определенным образом пропатчить. Т.е. минимальный вирус, удовлетворяющий подобному определению, будет обычным таким файловым вирусом, который при запуске просто дописывает себя в какой-нибудь исполняемый файл, изменяя точку входа на свое тело.
>> No.47247 Reply
File: 1487229840689.png
Png, 1056.21 KB, 1920×1200 - Click the image to expand
edit Find source with google Find source with iqdb
1487229840689.png
Здравствуйте, господа. На ассемблере не пишу, но получилась очень ебанутая ситуация, препод уже старый и впадает в маразм. По предмету С++ задал написать программу с ассемблерной вставкой. Шифр Цезаря (+ дешифратор).
https://clintonbale.wordpress.com/2011/11/23/cpp-caesar-shift-using-inline-assembler/ прогу нашел здесь, но она легко гуглится. Буду благодарен тому, кто ее немного переделает, чтобы не было палева.
>> No.47248 Reply
>>47247
Могу переделать на GCC с at&t синтаксисом ассемблерной вставки, подойдет?
>> No.47249 Reply
>>47248
Если не сильно затруднит.
>> No.47250 Reply
>>47248
Если не затруднит.
>> No.47257 Reply
>>47250
Вот, под линуксом в GCC собирается и работает под 32 бит, в виндах не тестировал.
https://paste.debian.net/hidden/d14e0a7a/
>> No.47258 Reply
>>47257
Вот этот комментарий убрать можно, он не нужен
// "mov eax, data\n\t"
и еще можешь имена меток поменять на какие-нибудь другие, например вместо done: сделать end: и тому подобное
>> No.47262 Reply
>>47257
Столько лет, а все никак не могут прикрутить мультилайн для асма без вот этого вот пердолинга с кавычками\newline и отдельных .s-файлов.
>> No.47263 Reply
>>47262
Это все ерунда на самом деле. Нормальному программисту не составит труда написать примитивнейщий скрипт, который бы на вход принимал код на ассемблере, и приводил его к виду, подходящему для асмовставки, т.е. на каждую строчку чтобы были эти открывающие/закрывающие кавычки и \n\t. Да и наверняка такие скрипты уже кем-то написаны
>> No.47264 Reply
>>47263
Однострочник на перле или авк.
>> No.47327 Reply
>>47263
Всё можно, но толку от этого пердолинга? Надо, чтобы gcc собирал микс сразу, а не для каждого файла делать пердолинг. И чтобы читаемость была.
>> No.47333 Reply
>>47327
Ассемблерные вставки используются сейчас настолько редко, что никого это не волнует
>> No.47904 Reply
File: ass00.PNG
Png, 98.53 KB, 1213×643 - Click the image to expand
edit Find source with google Find source with iqdb
ass00.PNG
Раз-раз, проверка связи!
Такое дело, даже дела: собрался учить ассемблер, читаю теорию, попытался в практику (пик) – облом. Пишу русские буквы, открываю в Hiew – вместо них хуита. Запускаю этот prax00.com – "Версия этого файла несовместима с используемой версией Windows". DosBox не запускается (потому что Windows 7 x64).
Может кто что-нибудь подскажет?
P.S. Тред почти не читал.

Инфа на всякий случай – www.democoder.ru переехал на demoscene.ru.
>> No.47905 Reply
>>47904
Пиши сразу hex код, какие русские буквы?
> DosBox не запускается (потому что Windows 7 x64).
С чего бы?
>> No.47906 Reply
>>47904
Не занимайся такой ерундой, как дос. И не используй виндовс. Используй GNU/Linux, и пиши на ассемблере в нем
>> No.48193 Reply
Можно заняться системным программированием под DOS с досбокса? Пробовал скопипастить прогу, которая блокирует нажатие определенных клавиш - что-то не робит.
>> No.48208 Reply
File: 05ab9670091e82adc1c63cb464af652c.jpg
Jpg, 353.40 KB, 765×472 - Click the image to expand
edit Find source with google Find source with iqdb
05ab9670091e82adc1c63cb464af652c.jpg
>>48193
Ты лучше, анон, вздрочни вприсядку. И поебёшься — и попляшешь!
>> No.48213 Reply
>>48193
> Можно заняться системным программированием под DOS с досбокса?
Можно, но зачем? Я знаю лишь один реальный способ, которым можно заработать на программировании под дос на ассемблере - делать домашку студентам из стран СНГ
>> No.48307 Reply
>>48193
DOXBox - только для игор. Это не полноценный эмулятор DOS со всеми потрохами, это просто среда для запуска игрушек:

> > DOSBox emulates an Intel x86 PC, complete with sound, graphics, mouse, joystick, modem, etc., necessary for running many old MS-DOS games that simply cannot be run on modern PCs and operating systems, such as Microsoft Windows XP, Windows Vista, Linux and FreeBSD.

> > Q: What is the focus of DOSBox?

> > A: According to its developers, DOSBox is focused on DOS games. Non-gaming DOS applications are not the primary focus of DOSBox, even though most DOS applications might in fact work within DOSBox. The DOSBox project has a policy of not adding features that aren't used by DOS games if they take significant effort to implement, are likely to be a source of bugs or portability problems, and/or impact performance. ... If you want to run serious DOS applications within a DOS emulator, you'd better try dedicated emulators such as vDos and vDosPlus instead, which are designed to run DOS applications rather than games.
>> No.48308 Reply
>>48307
Добавить к нему TCP/IP и будет полноценная среда для запуска BTrieve.
>> No.48309 Reply
>>48307
Я точно знаю что на DOSBox сдают лабы студенты, которых заставляют под дос писать всякую хрень на асме т.е. всякие там переключение видеорежима, резиденты и прочее. В DOSBox можно даже Windows 95 запускать при желании
>> No.48313 Reply
А смысл вообще в ассемблере сейчас?

Со времен WinNT программы работают в максимально изолированном от аппаратного обеспечения режиме ибо правильно: в случае, если пойдет что-то не так, то у ОС будет возможность аварийно отключиться и не допустить повреждения аппаратных ресурсов. Набор функций WinAPI позволяет писать на С/С++ код, который будет взаимодействовать с системой (драйвера пишутся исключительно на С, пользовательский код разрешает С++).

Ассемблер сейчас - чисто академический язык, лабы по Ассемблеру в местном вузе например сочетают с обучением работе в Убунту (решают задачки в fasm, отлаживают в gdb)
>> No.48314 Reply
>>48313
> А смысл вообще в ассемблере сейчас?

1. Крэкерство
2. Реверсинг
3. Для запатчивания готовых программ без исходников, например создания модов к компьютерным играм, всевозможных читов типа прозрачных стен и автоприцелов во всяких контрстрайках
4. Написание всякой малвари (вирусы, трояны и пр.)
5. Умышленное запутывание кода (в т.ч. в вирусах, в т.ч. в проприетарном софте, дабы усложнить работу тем, кто его будет крякать и реверсить).
6. Анализ кода, порожденного компилятором. Компиляторы часто генерируют неоптимальный код, и проанализировав его, можно улучшить компилятор, чтобы он порождал более эффективный код. Есть еще ситуации, когда компилятор выдает неправильный бинарник на выходе из-за багов в самом компиляторе, такие случаи тоже можно выявить чтением ассемблера.
7. Низкоуровневая оптимизация. Видеокодеки и всякая криптографическая ерунда часто пишется на ассемблере. Можете например исходники FFmpeg посмотреть https://github.com/FFmpeg/FFmpeg/search?l=assembly . А еще библиотеки для длинной арифметики, типа https://gmplib.org/ и всякие там перемножения матриц, майнеры криптовалют на CPU
8. Программирование под микроконтроллеры

думаю, список можно продолжить
>> No.48315 Reply
>>48314
Да, можно еще вспомнить написание шеллкодов и эксплоитов всяких, написание платформозависимой части операционных систем
>> No.49480 Reply
Потух тредик чёт. Все на пхп и го(и тому подобное говно) перешли
>> No.49482 Reply
>>49480
Хочу, но не могу. Поясняй, вводи в курс. 16 бит меня не очень интересует.
>> No.49484 Reply
>>49482
Я не >>49480 но в курс ввести могу. Что интересует вообще? Под какую ОС, архитектуру? Например, могу под GNU/Linux ввести в курс, типа как компилировать простейшие консольные программы на ассемблере, как их отлаживать.
>> No.49485 Reply
>>49482
Такие простые материи тебе любой учебник по асм объяснит. Благо их дохуя. На 32 и 64, хоть на 8бит. Всё это есть. Я знаю о чём говорю так как сам всё от книг узнал. Если уж и буду что-то объяснять, то это не будет "как сложить 2+2".
Да и не преподавать собираюсь, а знаниями обмениваться. Если знающих по нулям то и делать тут мне больше нечего
>> No.49486 Reply
>>49485
> Да и не преподавать собираюсь, а знаниями обмениваться. Если знающих по нулям то и делать тут мне больше нечего
А какими примерно знаниями ты хочешь обменяться? Знаниями написания шеллкодов? Так об этом тоже полно всяких туториалов. Что тебя интересует?
>> No.49487 Reply
>>49484
Пойдёт. Хочу просто интро под x86 x86_64, например, везде, где видел, был дос и 16. ОС, наверно, без особой разницы.
>> No.49488 Reply
File: CallStackFrame.png
Png, 55.67 KB, 1200×1605 - Click the image to expand
edit Find source with google Find source with iqdb
CallStackFrame.png
>>49487
Под x86 для введения можно взять https://www3.nd.edu/~dthain/courses/cse40243/fall2015/intel-intro.html http://stolyarov.info/books/programming_intro/vol2 https://pacman128.github.io/pcasm/ https://quantum-mirror.hu/mirrors/pub/gnusavannah/pgubook/ProgrammingGroundUp-1-0-booksize.pdf
А еще вот очень советую https://beginners.re/RE4B-RU.pdf - правда это не конкретно о программировании, но тоже в тему.
И вот еще лекция https://www.lektorium.tv/lecture/14989

Можно еще индивидуальные занятия попробовать провести, но тогда оставь почту или jabber. Я не знаю какой у тебя бекграунд.
>> No.49491 Reply
>>49488
zola@i2p.rocks, бэкграунд слабенький, на всякий оставлю, если ничего не пойму, да и просто, чтобы заставить себя взяться за асм.
Списочек хороший, это всё мне не появлялось ни разу.
>> No.49501 Reply
>>42553
У тебя функция testFunction ничего со стеком не делает чтобы отчистить его от аргументов, сделай 4 pop после call и все будет ок Slow.jpg
>> No.49502 Reply
так а теперь мой вопрос , у кого нить есть инфа о том как происходит идентификация апаратного обеспечения x86 пекарни? я пишу программу в реальном режиме процессора и хочу напрямую работать с видеоадаптером , вот только мне нужно сначала определить что за адаптер , как формальным образом это сделать ? может в бизусе записанно где нибудь ?
>> No.49504 Reply
Недавно читал Programming from the ground up. Прочёл половину. И в этой половине не было сказано, как преобразовывать числа в ASCII-коды для вывода в консоль.
Больших успехов не достиг, зато уразумел разницу между x86, x86_64, x32 и устройство стека — как вызываются сишные функции. Подёргал сисколлы.

А скажите, есть ли у GCC такой флаг, который заставит его выводить ассемблерный код функций стандартной библиотеки? Например, если я напишу хелловорлд на Си и сделаю «gcc -S» — чтобы в файле был не просто вызов printf, а все инструкции?
>> No.49505 Reply
>>49504
боюсь что нет, поскольку функции стандартной библиотеки уже скомпилированны в обьектные файлы и линкуются к твоему скомпилированному объктнику. Можно все слинковать и дизамблить objdump ом как вариант я полагаю
>> No.49506 Reply
>>49504
По-моему там очень злоебуче всё, нагромождение кучи слоев абстракции, так что няшненькие листинги не получатся.
>> No.49507 Reply
>>49502
из того что мне удалось выяснить скорее всего оборудование и правда записано где то в бизусе, пока что читаю "Дармаван Салихан BIOS дизасемблирование модификация программирование 2007г" чего начитаю отпишу
>> No.49515 Reply
File: 1ce0d716fd3221378bb721e73fdbcb9f84325f0457ce1bfc23.jpg
Jpg, 1100.33 KB, 1000×1444 - Click the image to expand
edit Find source with google Find source with iqdb
1ce0d716fd3221378bb721e73fdbcb9f84325f0457ce1bfc23.jpg
>>49505
>>49506
> objdump
А можно и GDB.
То, что получается в итоге, трудно разобрать для нуба; на том уровне, на котором я сейчас нахожусь, хочется побольше практических примеров, а не реверсинга. Для гнутого ассемблера их труднее найти, а код для других ассемблеров тоже не слишком понятен поначалу.
Жаль.

Хорошо, что есть
.intel_syntax noprefix
— намного легче писать. Синтаксис AT&T больше подходит для чтения машинами, чем для написания людьми.
>> No.49687 Reply
Инвайт-линк в чат крэклаба (исследование и взлом программ):
https://t.me/joinchat/K9QvRBMc0dN9d_pjKQ1KFw
>> No.49691 Reply
File: Touhou.full.2000847.jpg
Jpg, 1698.33 KB, 1514×1556 - Click the image to expand
edit Find source with google Find source with iqdb
Touhou.full.2000847.jpg
>>43017
> > или же приведения в негодность аппаратных комплексов компьютера.
Интересно, многа надо думать, чтобы прийти к такому успеху?
>> No.49692 Reply
Совсем прижал долбанный аутизм, и вот я взялся переписать на асме некоторую часть сишных библиотек. Просто-напросто через хидерсы подключается объектный код, скомпилированный НАСМом.
Но уже при попытке реализовать форматированный принт столкнулся с проблемой вывода банальной строки. В отладчике дело доходит до sys_write, но в консольке - ничаво.
Напомню, что сама функция написана в асме и без сомнений верно, её вызов происходит в сишном мэйне. Дескриптор стдаут - правильный.
>> No.49693 Reply
>>49691
> Интересно, многа надо думать, чтобы прийти к такому успеху?
Вряд ли, учитывая что это часто происходит само по себе, например из-за криворуких юзеров, перепрошивающих биос видеокарты и материнки
>> No.49698 Reply
File: 75eaec03aa73353bef4944eb17a7edf5-imagepng.png
Png, 570.55 KB, 700×980 - Click the image to expand
edit Find source with google Find source with iqdb
75eaec03aa73353bef4944eb17a7edf5-imagepng.png
>>49692
> форматированный принт
О-хо, это же сложно же.
И надо же, я не так давно тем же занимался, когда увидел, сколько запутанного непонятного кода в glibc. Только попроще — сравнение строк, поиск подстроки, вот такое, из <string.h>. И немного иначе: ассемблерные функции хранятся в исходниках, компиляция статическая.
> В отладчике дело доходит до sys_write, но в консольке - ничаво.
Сверься с ABI. Для Linux x86-64 надо так:
RAX — номер сисколла;
RDI, RSI, RDX, R10, R8, R9 — аргументы.
Или покажи код.
>> No.49700 Reply
>>49698
> О-хо, это же сложно же.

Сначала реализация элементарных вывода строки. Далее, простейший парсинг на дескрипторы.
Ну и сам вывод - можно в консоль, диск или буффер. по сути, должен получится sprintf
> И надо же, я не так давно тем же занимался, когда увидел, сколько запутанного непонятного кода в glibc.
Пока не лез в те края, чтобы самому велосипеды придумывать.

> Сверься с ABI. Для Linux x86-64 надо так:
> RAX — номер сисколла;
> RDI, RSI, RDX, R10, R8, R9 — аргументы.
Здесь всё верно, адрес строки в rdi (а пока только он и нужен).
Перед int80h: в a - 4, в b - 1, в c - адрес, d - заранее вычисленная длинна с нулём. Но... увы. Если же вызвать мой велосипед из ассемблерного "мэйна", то всё замечательно. Ума не приложу, как так.
>> No.49701 Reply
>>49700
> Здесь всё верно, адрес строки в rdi (а пока только он и нужен).
> Перед int80h: в a - 4, в b - 1, в c - адрес, d - заранее вычисленная длинна с нулём.
Да, вроде бы всё правильно. Только если у тебя 32-битная система или компилируешь с флагом -m32.
> заранее вычисленная длина с нулём
Она должна быть без нуля. scasb в этом поможет.
> Далее, простейший парсинг на дескрипторы.
Спецификаторы.

В качестве памятки:
https://en.wikibooks.org/wiki/X86_Assembly/Interfacing_with_Linux
И ещё:
https://en.wikipedia.org/wiki/X86_calling_conventions#cdecl
>> No.49706 Reply
>>49701
> movq $1, %rax ; use the write syscall
> movq $1, %rdi ; write to stdout
> movq $msg, %rsi ; use string "Hello World"
> movq $12, %rdx ; write 12 characters
> syscall ; make syscall

Забавно, что натыкался на это всё, когда гуглил, но видимо пребывал в полной уверенности, что интерфейсы не отличаются, потому и просмотрел. Разумеется, всё заработало.

> Спецификаторы.
Май бэд.
>> No.49710 Reply
>>49692-кун узнал, что существуют целые машинные инструкции по строкам. Так что планы по реализации своей стдио.х откладываются до полного ознакомления с оными. Мимо дела - почти полностью переписал string.h. Тут не было никаких проблем.
Не очень понял, как и главное куда записывать отформатированную копию буффера. Первый вариант - буфферизированный вывод (по 4КБ к примеру), но я боюсь, что спецификаторы могут лежать прямо на их границе. Второй вариант - запись в стэк по sp, но в виду очевидных особенностей писать придётся с конца, что разумеется усложняет парсинг (либо вообще делает его невозможным). Третий вариант - в кучу с динамическим наращиванием, но здесь страшно заебать ОС с brk() , если вдруг кто-то захочет Войну и Мир вывести.
Алсо тоже посмотрел glibc, в частности принтф; пока доходил до корневой функции (vbprintf вроде), понял что видел как минимум четыре исходника за время путешествия. Особо не вникал, но судя по всему на асме написаны только системные вызовы. Всё остальное - исключительно Си.

И ещё посоветуйте пожалуйста чтиво про эксплойты, вирусы, резиденты итд. под винду/линукс. Находил много чего подобного, но всё увы под реальную адресацию.
>> No.49712 Reply
File: yande.re-486709-dress-hiten-hitenkei-see_through.jpg
Jpg, 2526.64 KB, 2916×3500 - Click the image to expand
edit Find source with google Find source with iqdb
yande.re-486709-dress-hiten-hitenkei-see_through.jpg
>>49710
> Не очень понял, как и главное куда записывать отформатированную копию буффера.
Уже отформатированную — то есть, когда спецификаторы заменены, чем надо? Можно выводить, как есть, кусками, прямо по дескриптору. Без промежуточных буферов в программе — потому что у ОС уже есть свои.

> Алсо тоже посмотрел glibc
Там очень и очень запутанно. Советую musl, эта либа проще (не такая блотварная).

> почти полностью переписал string.h
> Тут не было никаких проблем.
Круто же. Залей код, если не стесняешься.
>> No.49975 Reply
>>32929
Живые люди в треде остались?
Я тут начинаю тыкаться в NASM. Всё не могу понять что за PIE и почему если я хочу таковые линковать, то вызывая Cишные функции мне нужно постояно писать после них wrt ..plt?
>> No.49976 Reply
>>49975
> PIE
Position Independent Executable. Статичные адреса не используются, а рассчитываются относительно IP. Нужно динамическим библиотекам, например.
> wrt ..plt
Для релокации.
Я мало об этом знаю, так что не буду пересказывать мануал.
https://www.nasm.us/xdoc/2.10rc8/html/nasmdoc9.html#section-9.1
>> No.49991 Reply
File: Screenshot_202106...
Png, 72.60 KB, 840×611
edit Find source with google Find source with iqdb
Screenshot_20210617_093107.png
File: nichan.png
Png, 1824.86 KB, 780×978
edit Find source with google Find source with iqdb
nichan.png

Писун на асме под микроконтроллеры итт. Кто-то еще тут под них пишет?
>> No.50035 Reply
>>49991
Я под STM32 прошивки пишу, использовать асм для этого смысла мало. Вот 8-битные AVR - другое дело, там инструкции предсказуемое количество тактов исполняются, потому что кеша нет и single level pipelining
>> No.50037 Reply
>>49991
>>50035
А что вы пишите? Вот есть у меня микросхема stm8s, а куда ее впиндюрить ума не приложу, а просто диодами мыргать не интересно.
>> No.50042 Reply
>>50037
Ну я по работе пишу прошивки. Например с сенсорным LCD экраном была штука, и там кнопками всякие настройки менять можно.
А если у тебя просто голый stm8s без какой-то интересной периферии, можешь какую-нибудь пищалку запилить, чтобы мелодии играла. Но вообще лучше бы докупить деталей, экранчик тот же, можно на него всякую ерунду выводить, сделать навигацию по менюшке.
>> No.50079 Reply
>>50042
Предложенные варианты тоже как-то неинтересны. Но у меня появилась одна идейка, закупил два бесконтактных датчика уровня жидкости, может что-нибудь и получится сделать.
Нашел еще PIC16C711, я так понимаю это очень страый мк, с которым и возиться смысла нет.
>> No.50080 Reply
File: staticlib001.zip.jpg
Jpg, 37.71 KB, 200×200 - Click the image to expand
edit Find source with google Find source with iqdb
staticlib001.zip.jpg
>>49710
> почти полностью переписал string.h
Недавно тоже. С инструкциями типа `movs`/`scas` очень легко оказалось. Это явно не самый быстрый вариант, поэтому я старался оптимизировать по размеру. Сейчас получается 14 объектных файлов и 269 байт кода, как показывает `size`.
В zip.jpg мейкфайл, собирающий статическую либу и несколько тестов. GNU assembler, AT&T syntax, AMD64 ABI.
Функции:
catlim
copy
fill
findc
finds
kitten
memeq
scopy
scopylim
slen
streq
strei
streqlim
zero


Password:

[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]