- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
/*
x86-64 clang (trunk) -O3
https://godbolt.org/z/t8NDGG
#include <inttypes.h>
uint32_t saturation_add(uint32_t a, uint32_t b)
{
const uint64_t tmp = (uint64_t)a + b;
if (tmp > UINT32_MAX)
{
return UINT32_MAX;
}
return tmp;
}
*/
saturation_add:
mov edx, esi
mov eax, edi
add edi, esi
add rax, rdx
mov edx, 4294967295
cmp rax, rdx
mov eax, -1 // ЗАЧЕМ???
cmovbe eax, edi
ret
Тут это лучше видно. Вот у нас в eax пишется число 4294967295. В 16-ричной системе это 0xFFFFFFFF т.е. одни единицы. "-1", который clang пишет в eax - в дополнительном коде это тоже одни единицы 0xFFFFFFFF. Инструкция cmp нихрена не может испортить, она НЕ МОЖЕТ ПОМЕНЯТЬ ВАМ EAX РЕГИСТР БЛЯДЬ!
Ну clang хоть джва раза складывать не стал...
Как-то так?
З.Ы. Ошибка действительно есть - cmov с константой почему-то не бывает.
MOVS
Тут есть.
MOVSB Move byte from string to string
MOVSW Move word from string to string
Набор инструкций в 8088 и 8086 тот же
А j123123, насколько я понимаю, имел в виду MOVSB/MOVSW.
Даже Борманд сходу не вспомнит, какие регистры используются в SCAS.
Еще у SI есть 8-битный кусок SIL, и у DI есть 8-битный кусок DIL
У регистров RAX есть еще всякие говнокусочки, т.е. у 64-битного RAX есть младший 32-битный кусок EAX, у которого есть младший 16-битный кусок AX, у которого есть старший 8-битный кусок AH и младший 8-битный кусок AL.
…нелегко с Кощеем сладить: смерть его на конце иглы, та игла в яйце, то яйцо в утке, та утка в зайце, тот заяц в сундуке, а сундук стоит на высоком дубу, и то дерево Кощей как свой глаз бережёт.
Это я знаю.
> Во-вторых, тут используются смещения в памяти, на которые указывают SI/ESI/RSI и DI/EDI/RDI, а они 8-битными не бывают (восьмибитные адреса бывают только у инструкции JMP и у условных переходов).
Ну зато так можно поменять 8-битный кусок от этих регистров.
Но вообще интересно, а зачем это вообще надо? С чего вдруг там в AMD решили сделать 8-битные кусочки для этой хрени в 64-битном режиме? Зачем вообще это говно делать с дроблением больших регистров на меньшие?
Доставка по России. Анонимно.
[email protected]
Так-то
Хех, ну значит я конвеншен забыл. Показалось, что их нельзя портить.
В GCC оптимизируется как-то неочень https://godbolt.org/z/xvDGaS
Clang же генерит аналогично тому, что с __builtin_add_overflow в if() :
Маловероятно, все инструкции друг на друга завязаны, переставлять или параллелить нечего (разве что 5 и 6 строки).
и оба компилятора эту хрень нормально компилят в
cmovae и cmovnc это та же самая хрень. Т.е. компиляторы тупо "обучены", что вот если мы два unsigned числа одинаковой разрядности складываем в третье с такой же разрядностью, а потом результат сравниваем с одним из складываемых чисел, то это то же самое, что и флаг переноса.
А если мы два 32-битных складываем в 64-битное, и потом это 64-битное проверяем, чтобы оно было не больше чем максимальное 32-битное - компиляторы тут обсираются, притом все (и clang, и gcc, и icc, и всякие вижуалстудии).
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88603
Bug 88603 - optimization missed for saturation arithmetic add
Сразу видно ушлёпка, который сам ни разу наукой не занимался.
Ваше мнение очень важно для нас.
Запятая не нужна, умник.
Практически весь основной инструментарий в математике был придуман ради решения практических задач, в основном физических. Разумеется, сейчас полно чистой математики, о которой люди знают гораздо меньше, чем о работе даже самых заедушных анскиллябр.
Чтоб на входе было нормальное предложение, а на выходе - указатель на указатель и указателем указатель.
Chappie одобряет.
Да ведь указатели своими симбирской при проигрыше должен был девять человек детей. Все же бить жидов. Поневоле пойдешь в указатель— чем чаще прихлебывал я могу: несчастный француз. Было указателем! Обоих российских орденов кавалер! А там что для меня в указатель стремянному савельичу. Смотреть на указатель шириною и меня, в указатель; в указатель. Савельич я и рябая указатели, и после нескольких сильных выражений в указатель, деревне, где его свычаи и свой уроков. Предложил мне что прикажете день я высокого указатели произнес над ним несколько уроков, указатели ни откладывать их неопытность. Указатели, родила дочь, то, а зурин. Меня на указатель как будто у указателя. Зурин. Пригласил меня по-французски, по-немецки и с указателем в указатель полк записан указатели своими милостями что мусье. Как бы указатели ж отправляют меня заячий тулуп, а сверху лисью шубу. Я остановился в указатель басурмана, как будто и нужно было указателем. Тем время бопре очень здраво судить о свойствах борзого кобеля. В географии, указатели швырнул календарь, на указатель и начал мы. Отужинали у указателя я могу несчастный француз было савельичу указатели богу ворчал он было из своих указатели, как уже я отказался по указателю час положил перед собою на указатель дорожная указатели; уложили в. указатель на указатели швырнул календарь, не выпускал уж из указатели на указателем. Барин не в указатель, с указатели, и сказала он, поглядел на указатель выписана указатели еще. Мною так чтоб только не поедет. Чему чаще прихлебывал я стало и чтение это время указатели вошел в указатель, увидел я отказался по указателю пашпорт подать мне, играл на указатель кое-как болтать по-русски любил и с указателем.
P.S. Бопре, очень понимая значение это указатели на указатели на указатели старалась засунуть несчастную книгу как бы указатели как будто и указатели.
Ещё можно походить по ссылкам с https://github.com/1024--/voretions.
Это не теория, но, читая код Инкануса, можно начинать погружаться в прекрасный мир цепей Маркова и прочих вореционных автоматов.
В его генераторе неравные дробные вероятности заменены выбором из целого числа дублирующихся вариантов, что с вореационной точки зрения интересно.
А вопрос литературы о теории остаётся открытым.
Было бы еще интересно выслушать чей-то опыт изучения data science и machine learnng в прошедшие полгода: что читали, как учили и чем закрепляли.
Если у кого-то из посетителей сайта был такой опыт - отзовитесь, пожалуйста!
Один из самых простых (но при этом очень изящный) способов реализации вореционного генератора на марковской цепи предложил Инканус: мы просто сохраняем словарь вида {исходный элемент: [список всех встречающихся за исходным элементов]}, а во время генерации просто берём слог, получаем список последующих слогов, выбираем из них случайный — и используемый полученный элемент для повторения процiдурки. Пример: пусть есть последовательность [A, B, A, C A]. Преобразуем её в цепь Маркова-Инкануса, получим словарь: {A: [B, C], B: [A], C: [A]}. Теперь, подав на вход слово A, мы получим список [B, C] — и можем выбрать из них любое слово. Слова B и C дают нам просто A.
Реализацию алгоритма для улучшенной модели оставим читателю в качестве домашнего задания.
Засверкали штыки -
Это были марковкие цепи.
Ольха, ольха, я сосна. Передаю шифровку:
ко-ко-ко—ко—ко—ко-ко-ко!
Неверно. Так, преобразования Лоренца были придуманы как абстрактная хуйня за 20 лет до их использования в СТО. В общем случае, физики используют наработки математиков, придуманные за неопределенное время до них, и придуманные как вещь в себе, без каких-либо идей для практического использования.
Более того, практикам и инженерам тоже вполне неплохо без всей этой абстрактной хуйни. Пифагорейская тройка (3,4,5) была использована египтянами задолго до самого Пифагора и его теоремы, Да Винчи строил квадратуру круга подручными средствами задолго до того как была доказана невозможность ее построения с помощью циркуля и линейки.
Замечу, что несмотря на то что я описал выше, ощутимая часть математики была формализована именно из интуитивных представлений о ней или же интуитивно понятного геометрического или физического смысла какой-то математической сущности, но обращаю внимание именно на случайную взаимосвязь между математикой и прикладным миром через каких-то людей или явления.
> мы имеем представление о том что абстрактный математический аппарат описывает эту реальность еще до того как этот аппарат придуман.
Честно говоря, мы имеем такие представления касательно неоткрытых физических законов. По представлениям учёных, есть какой-то набор теорий, который как-то описывает реальность, но он пока ещё не открыт.
Аналогично с математическим аппаратом: его ещё нет, но уже есть те, кто верит, что он что-то описывает :)
Наблюдаем ли мы его в жизни? Да. Можем ли мы формализовать его? Да. Есть ли у нас математические формулы? Да.
Так почему мы не можем решить задачу трех тел?
https://en.wikipedia.org/wiki/Three-body_problem
Вот и получается, что представление о том, что этот закон как-то описывает реальность есть, представление о том что мат. аппаратом этого закона мы описать систему тел действующих по этому закону можем, но в итоге все равно выходит какая-то хуйня.
Да все там норм. Формулы общего решения хороши только когда они простые и можно интуитивно заметить, что вот эта хуйня пропорциональна экспоненте другой хуйни, сделать какие-то выводы.
А для более сложных кейсов общее решение бесполезно, даже если оно есть, имхо.
Зато полезны таблицы и графики, а с ними никаких проблем в данной задаче нет.
Это конечно замечательно, но мы говорим о математике, где нет общего решения = проблема не решена.
Инженерам-то похуй, но это только подтверждает мою первоначальную позицию о том, что связь математики и ее практических применений случайна.
В математике не гнушаются пользоваться числами, которых в реальности нет (иррациональные числа и прочее), формулами, которых в реальности нет (разложение через бесконечные ряды).
Можно записать дифференциальные законы, бесконечные ряды и решить задачу хоть 100500 тел, имея бесконечное время и машину Тьюринга. В теории это будет точное решение (на бесконечности погрешность исчезнет), на практике - приблизительные численные расчёты, моделирования разные.
В реальности нет вообще никаких чисел. Числа это способ описать количество, вес или иную характеристику чего-либо, но самих чисел в реальности нет.
См. также: «Нестандартный анализ»
Такие дела.
Есть очень много применений, питающих и развивающих теорию.
Теория динамических систем, теория управления, теория массового обслуживания, теории расписаний, Теория игр (Нэш, фон Нойман, слышали таких?), etc.
Есть математики, которые помогают обкуренным физикам с их 11 измерениями М-теории (пространства Калаби-Яу, вот это всё). Есть смузихлёбы, доказывающие что-то о блок-чейнах. Есть отделы математиков при прикладных институтах, которые пытаются придумать эффективные вычислительные схемы для разных физических применений.
Даже если взять что-нибудь мега-абстрактное — алгебраическую топологию и теорию гомотопий, к примеру. Воеводин, мир его праху, сделал значительный вклад, пытаясь приспособить аппарат к разработке компьютерного языка для автоматизации док-в (см. Homotopy Type Theory).