[WT] [Архив]  [Поиск] Главная Управление
Ычан: [d | b / bro / gf / hr / l / m / med / mi / mu / o / ph / r / s / sci / tran / tv / x | vg | au / tr | a / aa / c / fi / jp / rm / tan / to / vn]
[Совместно с Ычаном]
[Назад]
Ответ в нить
Имя
Animapcha image [@] [?]
Тема   ( ответ в 21589)
Сообщение flower
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаются файлы типов 7Z, BZ, BZ2, GIF, GZ, JPG, MO, MP3, MP4, OGG, OGV, PDF, PNG, PSD, RAR, SVG, SWF, TXT, WEBM, XCF, ZIP размером до 5000 кБ.
  • Ныне 2984 unique user posts. Посмотреть каталог
  • Максимальное количество бампов нити: 500
155323933124.png-(4.95KB, 680×440, 680px-FASM.png)
21589
No. 21589 watch    
Почему тут ещё нет треда для ценителей классики? Почему никто не интересуется тем, как работает процессор? Ведь даже если вы не хотите быть монстром, который создаёт программы весом в пару килобайт, с функционалом в десять раз больше, чем десять программ по гигабайту, то всё равно- понимание принципов работы ассемблера крайне необходимо. А уж если вы решили хакером стать, или хотите придумывать для приложений лекарства от жадности, то знание ассемблера просто необходимо.

Давайте все вместе будем его учить, делать демки, а то и вообще десктопные приложения, и ломать устои современного мира, где программа, которая умеет совсем чуть-чуть- должна весить десятки мегабайт

Хороший сайт с учебником FASM
asmworld.ru/

Сообщество разработчиков ОС на чистом ассемблере
kolibrios.org/
Развернуть все изображения
No. 21590    
>>21589
Ты расскажи лучше, что сам сделал/делаешь, вдохнови примером.
No. 21591    
>>21590
Хеллоуворлд только написал. Учусь я
No. 21647    
>>21591
Ну и как? Тред интересный сам по себе, но зачем, когда подобный наверняка можно найти в /g/ 4чана, там и народу побольше будет, наверное.
No. 21650    
>>21647
>но зачем, когда подобный наверняка можно найти в /g/ 4чана
Это можно сказать о всём разделе, но мы всё-таки здесь, а не там.
No. 21651    
>>21647
Интересно. Но сложно. Много слов непонятных и операций математических
> но зачем, когда подобный наверняка можно найти в /g/ 4чана, там и народу побольше будет, наверное.
Английский
No. 21668    
>>21651
Где ты там математические операции нашёл?
No. 21671    
>>21668
Ну вот например вычитание. Статью, где оно объяснялось- я перечитывал раз пять, пока не понял до конца, как оно там работает
No. 21673    
155358329229.jpg-(466.62KB, 1280×1024, 29 - 1280x1024@32 [SIGece42367eda798e5153df49e7ef8.jpg)
21673
>>21671
Кольца же. Можно представить как C = op (A, B) mod β^n, где n — количество разрядов. Числа можно также представить поразрядно как X = summ from i=0 to n-1 of Xi * β^i. Отрицательные числа представляются в виде A' = β^n - abs (A) при дополнении до двух, что позволяет не различать их в аддере и субтракторе. Флаги АЛУ выбрасывает на любой операции с ним согласно их формулам, формулы элементарные; единственный м.б. сложный флаг — это Signed, если он есть. А так, это классическая арифметика, все эти приёмы спокойно можно применять к любой системе счисления. Для десятичных числодробилок только дополнение до девяти получается невыгодным, там аддер и субтрактор таки различают положительные и отрицательные числа — это дешевле. Единственное, битовые операции работают с битовыми массивами, т.е. операция применяется к каждому разряду, поэтому они никогда не приводят к переполнению.

Раз у тебя проблемы с арифметикой, посоветую Кнута и Зиммермана: https://members.loria.fr/PZimmermann/mca/pub226.html В общем же, нет разницы, в какой системе счисления считать, с основанием 2 или 10^8, лол.
No. 21674    
>>21673
Это что, правда такие умные Чиочаньки бывают? Жуть. Я ничего не понял
No. 21680    
>>21673
Да, вот это вот. Если ты видишь вот ТАКОЕ ВОТ в книге, то беги от неё далеко и сразу.
Непонимание двоичной системы счисления идёт от непонимания десятичной. Более того, я сейчас скажу непопулярное мнение, но двоичная система не нужна. Да и шестнадцатиричная тоже. Ты ими пользоваться (за пределами передачи констант куда-то) будешь примерно никогда. А понимание их работы придёт потом всё равно, само по себе.

Собственно, вычитание делается просто - как и в обычной школьной арифметике. Допустим в двоичной системе 11100 - 1. Ну и отнимаем. От 0 один не отнимается, поэтому занимаем слева, получаем 111_1, где _ - это значёк займа. Там то же самое, поэтому опять занимаем слева. Там 1, поэтому занимаем эту единицу и получаем 11011. Теперь ход конём, допустим у нас всего четыре бита и мы делаем 0000 - 1. Проделываем все шаги и получаем _111, где _ - значёк займа. Поскольку у нас нету пятого бита, мы можем, например, предположить, что там магическим образом существует единица, и получить число 01111. Но у нас всего четыре бита, поэтому мы отбрасываем самый левый (не поместился) и получаем 1111. Но что мы сделали на самом деле? Мы вычли из нуля единицу и получили такое вот число. Значит, если мы сильно захотим, то можем считать, что для четырёхбитных чисел число 1111 = -1. Как ты знаешь из математики, 3 - 2 = 3 + (-2). А это значит, что вместо вычитания мы можем перевести второе число в отрицательное и сложить.

Вот и вся премудрость. А закалённых совком старпёров с "программирование - это математика" (или ещё лучше "программирование на ассемблере - это математика") не слушай. Они любители усложнять на ровном месте. Как сказал один индус из Brown University: это попытки высосать тот самый science о котором говорится в computer science. Хотя в данном случае эти попытки и имеют чуть большее отношение к реальности, чем, например, классификации языков программирования, но всё же.

А, на счёт программирования на ассемблере. Вот тут тебе, на самом-то деле, достаточно лишь знать, что вычитание делается командой sub. То бишь, вот это всё сверху можно пока пропустить мимо ушей и ничего не потерять.

Такие дела.
No. 21684    
>>21680
Спасибо. Теперь вроде начало доходить
Посижу, попробую сделать это на бумажке, и мне кажется окончательно дойдёт
No. 21703    
>>21589

> Почему никто не интересуется тем, как работает процессор?
Никто уже и не знает полностью, как работает современный процессор. А те кто знает больше прочих этим знанием делиться не спешат.
Если хочется разобраться в работе процессора как такового, стоит смотреть в сторону микроконтроллеров, где мануал по программированию занимает пару сотен страниц и может быть одним человеком осмыслен целиком и полностью. К тому же программа в микроконтроллере исполняется сама по себе, а не в контексте ОС, и не придётся осваивать параллельно какие-нибудь WinAPI чтобы сделать хоть что-то. От себя рекомендую AVR, у них довольно приятная архитектура.

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

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

Могу посоветовать вот этот гайд для самых начинающих, описывающий самые простые вещи понятным языком, в том числе двоичную систему в контексте представления чисел в памяти компьютера вообще и в регистрах процессора в частности: http://bitfry.narod.ru/00.htm
No. 21729    
Есть малина.
До этого ничего не программировал (TurboPascal на первом курсе института, но это было давно и неправда).
Ничего не умею вообще.
Хочу поковырять язык ассемблера.
Надеялся на то, что будет куча обучающих штук для совсем новичков. Но кучи нет.
Есть http://infocenter.arm.com/help/topic/com.arm.doc.den0024a/DEN0024A_v8_architecture_PG.pdf
Есть серия уроков https://www.youtube.com/watch?v=ViNnfoE56V8 из четырёх частей.
Есть https://www.raspberrypi.org/blog/tag/assembly-language/

Страшно и непонятно. С чего начинать? Не начинаю ни с чего.
Мне интересно вывести картиночку на монитор. Допустим, есть последовательность простеньких кадров в векторной графике. Засунуть их в код и сделать анимацию. Так ведь можно?

Направь меня в нужную сторону, Чиочан. Желательно пинком.
No. 21742    
> в векторной графике
> на монитор
А проигрыватель mp3 ты написать не хочешь?
Начни с х86, там туториалов всяко побольше будет. Если разберёшься с одним асмом, то чтобы освоить другой уже будет достаточно документации.
No. 21743    
>>21729
Малинка это хорошо. Но это же ARM вроде. По ARM-у я наверное не советчик, так как сам FASM, который только на x86 мутится, учу. Видимо тебе придётся быть в этом деле первооткрывателем. Но если что-то конкретное не ясно- пиши сюда. Будем все вместе разбирать
No. 21744    
>>21742
>Начни с х86
Несмотря на то, что я бы рекомендовал то же самое, можно же нагуглить книжки сразу для армов. Вот, например, Modern Assembly Language Programming with the ARM Processor 2016го и Arm A32 Assembly Language: 32-Bit Arm, Neon, VFP, Thumb 2017го годов.
>>21743
Для фасма есть форк (ссылка прямо на странице скачивания) для армов. А ещё и fasmg есть, но для него макросы придётся дописывать самому.
Удалить сообщение []
Пароль  
[Mod]