- 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
j123123 26.12.2018 18:28 # +1
Тут это лучше видно. Вот у нас в eax пишется число 4294967295. В 16-ричной системе это 0xFFFFFFFF т.е. одни единицы. "-1", который clang пишет в eax - в дополнительном коде это тоже одни единицы 0xFFFFFFFF. Инструкция cmp нихрена не может испортить, она НЕ МОЖЕТ ПОМЕНЯТЬ ВАМ EAX РЕГИСТР БЛЯДЬ!
bormand 26.12.2018 19:30 # 0
Ну clang хоть джва раза складывать не стал...
Как-то так?
j123123 26.12.2018 19:43 # 0
bormand 26.12.2018 19:45 # 0
j123123 26.12.2018 19:46 # 0
j123123 26.12.2018 19:48 # 0
bormand 26.12.2018 19:48 # 0
З.Ы. Ошибка действительно есть - cmov с константой почему-то не бывает.
nemyx 26.12.2018 20:25 # +3
guest8 26.12.2018 20:32 # −999
j123123 26.12.2018 20:47 # 0
MOVS
guest8 26.12.2018 20:48 # −999
j123123 26.12.2018 20:57 # 0
guest8 26.12.2018 20:57 # −999
j123123 26.12.2018 21:02 # 0
Тут есть.
MOVSB Move byte from string to string
MOVSW Move word from string to string
Набор инструкций в 8088 и 8086 тот же
nemyx 26.12.2018 21:04 # 0
А j123123, насколько я понимаю, имел в виду MOVSB/MOVSW.
nemyx 26.12.2018 20:55 # 0
Даже Борманд сходу не вспомнит, какие регистры используются в SCAS.
j123123 26.12.2018 21:11 # +1
Еще у SI есть 8-битный кусок SIL, и у DI есть 8-битный кусок DIL
У регистров RAX есть еще всякие говнокусочки, т.е. у 64-битного RAX есть младший 32-битный кусок EAX, у которого есть младший 16-битный кусок AX, у которого есть старший 8-битный кусок AH и младший 8-битный кусок AL.
…нелегко с Кощеем сладить: смерть его на конце иглы, та игла в яйце, то яйцо в утке, та утка в зайце, тот заяц в сундуке, а сундук стоит на высоком дубу, и то дерево Кощей как свой глаз бережёт.
guest8 26.12.2018 22:14 # −999
j123123 26.12.2018 22:31 # 0
Это я знаю.
> Во-вторых, тут используются смещения в памяти, на которые указывают SI/ESI/RSI и DI/EDI/RDI, а они 8-битными не бывают (восьмибитные адреса бывают только у инструкции JMP и у условных переходов).
Ну зато так можно поменять 8-битный кусок от этих регистров.
Но вообще интересно, а зачем это вообще надо? С чего вдруг там в AMD решили сделать 8-битные кусочки для этой хрени в 64-битном режиме? Зачем вообще это говно делать с дроблением больших регистров на меньшие?
Sers 27.12.2018 02:21 # 0
Доставка по России. Анонимно.
[email protected]
j123123 26.12.2018 19:56 # +3
Так-то
bormand 26.12.2018 19:59 # 0
Хех, ну значит я конвеншен забыл. Показалось, что их нельзя портить.
j123123 26.12.2018 21:30 # +2
guest8 26.12.2018 21:36 # −999
guest8 26.12.2018 22:15 # −999
guest8 26.12.2018 22:21 # −999
j123123 27.12.2018 03:59 # 0
В GCC оптимизируется как-то неочень https://godbolt.org/z/xvDGaS
Clang же генерит аналогично тому, что с __builtin_add_overflow в if() :
bormand 27.12.2018 07:23 # 0
Маловероятно, все инструкции друг на друга завязаны, переставлять или параллелить нечего (разве что 5 и 6 строки).
j123123 27.12.2018 11:57 # +1
и оба компилятора эту хрень нормально компилят в
cmovae и cmovnc это та же самая хрень. Т.е. компиляторы тупо "обучены", что вот если мы два unsigned числа одинаковой разрядности складываем в третье с такой же разрядностью, а потом результат сравниваем с одним из складываемых чисел, то это то же самое, что и флаг переноса.
А если мы два 32-битных складываем в 64-битное, и потом это 64-битное проверяем, чтобы оно было не больше чем максимальное 32-битное - компиляторы тут обсираются, притом все (и clang, и gcc, и icc, и всякие вижуалстудии).
bormand 27.12.2018 12:33 # +2
j123123 03.01.2019 06:26 # +2
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88603
Bug 88603 - optimization missed for saturation arithmetic add
crestoblyad 03.01.2019 12:37 # 0
roman-kashitsyn 03.01.2019 13:32 # +1
Сразу видно ушлёпка, который сам ни разу наукой не занимался.
Ваше мнение очень важно для нас.
crestoblyad 03.01.2019 13:40 # 0
roman-kashitsyn 03.01.2019 14:11 # +1
Запятая не нужна, умник.
Практически весь основной инструментарий в математике был придуман ради решения практических задач, в основном физических. Разумеется, сейчас полно чистой математики, о которой люди знают гораздо меньше, чем о работе даже самых заедушных анскиллябр.
crestoblyad 03.01.2019 14:16 # 0
roman-kashitsyn 03.01.2019 14:22 # 0
crestoblyad 03.01.2019 14:25 # 0
roman-kashitsyn 03.01.2019 14:36 # 0
3oJloTou_neTyx 03.01.2019 14:39 # 0
roman-kashitsyn 03.01.2019 14:40 # 0
3oJloTou_neTyx 03.01.2019 14:44 # 0
1024-- 03.01.2019 15:44 # +1
Чтоб на входе было нормальное предложение, а на выходе - указатель на указатель и указателем указатель.
3oJloTou_neTyx 03.01.2019 18:51 # 0
roman-kashitsyn 03.01.2019 20:20 # 0
Chappie одобряет.
gost 04.01.2019 23:11 # +1
Да ведь указатели своими симбирской при проигрыше должен был девять человек детей. Все же бить жидов. Поневоле пойдешь в указатель— чем чаще прихлебывал я могу: несчастный француз. Было указателем! Обоих российских орденов кавалер! А там что для меня в указатель стремянному савельичу. Смотреть на указатель шириною и меня, в указатель; в указатель. Савельич я и рябая указатели, и после нескольких сильных выражений в указатель, деревне, где его свычаи и свой уроков. Предложил мне что прикажете день я высокого указатели произнес над ним несколько уроков, указатели ни откладывать их неопытность. Указатели, родила дочь, то, а зурин. Меня на указатель как будто у указателя. Зурин. Пригласил меня по-французски, по-немецки и с указателем в указатель полк записан указатели своими милостями что мусье. Как бы указатели ж отправляют меня заячий тулуп, а сверху лисью шубу. Я остановился в указатель басурмана, как будто и нужно было указателем. Тем время бопре очень здраво судить о свойствах борзого кобеля. В географии, указатели швырнул календарь, на указатель и начал мы. Отужинали у указателя я могу несчастный француз было савельичу указатели богу ворчал он было из своих указатели, как уже я отказался по указателю час положил перед собою на указатель дорожная указатели; уложили в. указатель на указатели швырнул календарь, не выпускал уж из указатели на указателем. Барин не в указатель, с указатели, и сказала он, поглядел на указатель выписана указатели еще. Мною так чтоб только не поедет. Чему чаще прихлебывал я стало и чтение это время указатели вошел в указатель, увидел я отказался по указателю пашпорт подать мне, играл на указатель кое-как болтать по-русски любил и с указателем.
gost 04.01.2019 23:17 # 0
P.S. Бопре, очень понимая значение это указатели на указатели на указатели старалась засунуть несчастную книгу как бы указатели как будто и указатели.
bootcamp_dropout 04.01.2019 23:22 # −1
1024-- 04.01.2019 23:31 # +1
Ещё можно походить по ссылкам с https://github.com/1024--/voretions.
Это не теория, но, читая код Инкануса, можно начинать погружаться в прекрасный мир цепей Маркова и прочих вореционных автоматов.
В его генераторе неравные дробные вероятности заменены выбором из целого числа дублирующихся вариантов, что с вореационной точки зрения интересно.
А вопрос литературы о теории остаётся открытым.
bootcamp_dropout 04.01.2019 23:38 # 0
Было бы еще интересно выслушать чей-то опыт изучения data science и machine learnng в прошедшие полгода: что читали, как учили и чем закрепляли.
Если у кого-то из посетителей сайта был такой опыт - отзовитесь, пожалуйста!
miheich 04.01.2019 23:45 # 0
guest8 06.06.2019 22:19 # −999
gost 05.01.2019 12:04 # +1
Один из самых простых (но при этом очень изящный) способов реализации вореционного генератора на марковской цепи предложил Инканус: мы просто сохраняем словарь вида {исходный элемент: [список всех встречающихся за исходным элементов]}, а во время генерации просто берём слог, получаем список последующих слогов, выбираем из них случайный — и используемый полученный элемент для повторения процiдурки. Пример: пусть есть последовательность [A, B, A, C A]. Преобразуем её в цепь Маркова-Инкануса, получим словарь: {A: [B, C], B: [A], C: [A]}. Теперь, подав на вход слово A, мы получим список [B, C] — и можем выбрать из них любое слово. Слова B и C дают нам просто A.
inkanus-gray 05.01.2019 12:25 # +1
Реализацию алгоритма для улучшенной модели оставим читателю в качестве домашнего задания.
gost 05.01.2019 12:32 # +1
inkanus-gray 05.01.2019 12:34 # 0
Increment_Excrement 06.06.2019 22:26 # −7
Засверкали штыки -
Это были марковкие цепи.
1024-- 04.01.2019 23:25 # 0
miheich 04.01.2019 23:31 # 0
1024-- 04.01.2019 23:34 # 0
miheich 04.01.2019 23:36 # 0
1024-- 04.01.2019 23:47 # 0
3oJloTou_neTyx 05.01.2019 00:30 # 0
Ольха, ольха, я сосна. Передаю шифровку:
ко-ко-ко—ко—ко—ко-ко-ко!
gost 05.01.2019 12:09 # +1
bootcamp_dropout 03.01.2019 14:26 # −1
Неверно. Так, преобразования Лоренца были придуманы как абстрактная хуйня за 20 лет до их использования в СТО. В общем случае, физики используют наработки математиков, придуманные за неопределенное время до них, и придуманные как вещь в себе, без каких-либо идей для практического использования.
Более того, практикам и инженерам тоже вполне неплохо без всей этой абстрактной хуйни. Пифагорейская тройка (3,4,5) была использована египтянами задолго до самого Пифагора и его теоремы, Да Винчи строил квадратуру круга подручными средствами задолго до того как была доказана невозможность ее построения с помощью циркуля и линейки.
roman-kashitsyn 03.01.2019 14:35 # +1
bootcamp_dropout 03.01.2019 14:58 # 0
Замечу, что несмотря на то что я описал выше, ощутимая часть математики была формализована именно из интуитивных представлений о ней или же интуитивно понятного геометрического или физического смысла какой-то математической сущности, но обращаю внимание именно на случайную взаимосвязь между математикой и прикладным миром через каких-то людей или явления.
1024-- 03.01.2019 15:52 # 0
> мы имеем представление о том что абстрактный математический аппарат описывает эту реальность еще до того как этот аппарат придуман.
Честно говоря, мы имеем такие представления касательно неоткрытых физических законов. По представлениям учёных, есть какой-то набор теорий, который как-то описывает реальность, но он пока ещё не открыт.
Аналогично с математическим аппаратом: его ещё нет, но уже есть те, кто верит, что он что-то описывает :)
bootcamp_dropout 03.01.2019 17:41 # 0
Наблюдаем ли мы его в жизни? Да. Можем ли мы формализовать его? Да. Есть ли у нас математические формулы? Да.
Так почему мы не можем решить задачу трех тел?
https://en.wikipedia.org/wiki/Three-body_problem
Вот и получается, что представление о том, что этот закон как-то описывает реальность есть, представление о том что мат. аппаратом этого закона мы описать систему тел действующих по этому закону можем, но в итоге все равно выходит какая-то хуйня.
bormand 03.01.2019 17:58 # 0
Да все там норм. Формулы общего решения хороши только когда они простые и можно интуитивно заметить, что вот эта хуйня пропорциональна экспоненте другой хуйни, сделать какие-то выводы.
А для более сложных кейсов общее решение бесполезно, даже если оно есть, имхо.
Зато полезны таблицы и графики, а с ними никаких проблем в данной задаче нет.
bootcamp_dropout 03.01.2019 18:02 # 0
Это конечно замечательно, но мы говорим о математике, где нет общего решения = проблема не решена.
Инженерам-то похуй, но это только подтверждает мою первоначальную позицию о том, что связь математики и ее практических применений случайна.
bormand 03.01.2019 18:03 # +1
bootcamp_dropout 03.01.2019 18:08 # 0
bormand 03.01.2019 18:31 # 0
bootcamp_dropout 03.01.2019 18:40 # 0
bormand 03.01.2019 18:43 # 0
roman-kashitsyn 03.01.2019 20:12 # +1
j123123 03.01.2019 21:04 # +2
HoBorogHuu_nemyx 03.01.2019 21:31 # 0
1024-- 03.01.2019 18:31 # 0
В математике не гнушаются пользоваться числами, которых в реальности нет (иррациональные числа и прочее), формулами, которых в реальности нет (разложение через бесконечные ряды).
Можно записать дифференциальные законы, бесконечные ряды и решить задачу хоть 100500 тел, имея бесконечное время и машину Тьюринга. В теории это будет точное решение (на бесконечности погрешность исчезнет), на практике - приблизительные численные расчёты, моделирования разные.
j123123 03.01.2019 18:35 # +2
В реальности нет вообще никаких чисел. Числа это способ описать количество, вес или иную характеристику чего-либо, но самих чисел в реальности нет.
bootcamp_dropout 03.01.2019 18:42 # 0
roman-kashitsyn 03.01.2019 20:14 # 0
См. также: «Нестандартный анализ»
roman-kashitsyn 03.01.2019 20:18 # 0
ab368 03.01.2019 20:20 # −1
bormand 03.01.2019 21:25 # +1
crestoblyad 03.01.2019 14:59 # 0
HoBorogHuu_nemyx 03.01.2019 16:21 # +1
Такие дела.
crestoblyad 03.01.2019 16:25 # 0
roman-kashitsyn 03.01.2019 17:35 # 0
Есть очень много применений, питающих и развивающих теорию.
Теория динамических систем, теория управления, теория массового обслуживания, теории расписаний, Теория игр (Нэш, фон Нойман, слышали таких?), etc.
Есть математики, которые помогают обкуренным физикам с их 11 измерениями М-теории (пространства Калаби-Яу, вот это всё). Есть смузихлёбы, доказывающие что-то о блок-чейнах. Есть отделы математиков при прикладных институтах, которые пытаются придумать эффективные вычислительные схемы для разных физических применений.
Даже если взять что-нибудь мега-абстрактное — алгебраическую топологию и теорию гомотопий, к примеру. Воеводин, мир его праху, сделал значительный вклад, пытаясь приспособить аппарат к разработке компьютерного языка для автоматизации док-в (см. Homotopy Type Theory).
crestoblyad 03.01.2019 18:03 # 0
3oJloTou_neTyx 03.01.2019 13:48 # 0
1024-- 03.01.2019 15:57 # +1
Steve_Brown 04.01.2019 13:18 # 0