Size: a a a

pro.osdev — расширенный хромосомный набор

2021 April 21

BD

Berkus Decker in pro.osdev — расширенный хромосомный набор
потому что это СЛОЖНО
источник

BD

Berkus Decker in pro.osdev — расширенный хромосомный набор
и компилятор тупо не умеет, у него время компиляции улетит на марс чтобы понять что тут хотя бы надо оптимизировать
источник

d

disba1ancer in pro.osdev — расширенный хромосомный набор
тут сложнее ибо заранее не известен размер, я про этот случай я выше вроде уже всё написал...
источник

BD

Berkus Decker in pro.osdev — расширенный хромосомный набор
ну это имеенно та “дружественная реализация” которую предлагают  для замены strcpy вручную
источник

BD

Berkus Decker in pro.osdev — расширенный хромосомный набор
(это и нее близко даже к тому  что написано в libc)
источник

d

disba1ancer in pro.osdev — расширенный хромосомный набор
если честно я и сам не знаю как эту штуку можно оптимизировать даже написав полностью на асме
источник

BD

Berkus Decker in pro.osdev — расширенный хромосомный набор
для этого надо мозг, желание, и много много  корнер кейсов
источник

BD

Berkus Decker in pro.osdev — расширенный хромосомный набор
ну для начала в глибц оно выбирает strcpy в рантайме в зависимости от имеющейся архитектуры и фич проца
источник

d

disba1ancer in pro.osdev — расширенный хромосомный набор
с memcpy надеюсь по проще?
источник

BD

Berkus Decker in pro.osdev — расширенный хромосомный набор
потом использует simd для нахождения нулевых байтиков и пока не наткнулись на ноль копирует целыми simd регистрами за раз
источник

BD

Berkus Decker in pro.osdev — расширенный хромосомный набор
same shit, там единственная разница - размер известен наперед, поэтому можно поделить на размер simd регистра и сразу выбрать алгоритм
источник

DF

Dollar Føølish in pro.osdev — расширенный хромосомный набор
Технически такое нахождение нулей это чтение за пределы объекта/аллокации
источник

IJ

Igor 🐱 Jirkov in pro.osdev — расширенный хромосомный набор
Замечу что переписав на ассемблере втупую получится, скорее всего, медленнее
источник

d

disba1ancer in pro.osdev — расширенный хромосомный набор
а не страшно что будет чтение за пределы 0-терминатора?
источник

BD

Berkus Decker in pro.osdev — расширенный хромосомный набор
это ж сишечка, ей ПОХУЮ
источник

d

disba1ancer in pro.osdev — расширенный хромосомный набор
возможно, целевая архитектура даёт гарантии на этот счёт
источник

BD

Berkus Decker in pro.osdev — расширенный хромосомный набор
а там еще такой момент что simd чтения всегда ALIGNED
источник

DF

Dollar Føølish in pro.osdev — расширенный хромосомный набор
Дааа
источник

d

disba1ancer in pro.osdev — расширенный хромосомный набор
не обязательно
источник

BD

Berkus Decker in pro.osdev — расширенный хромосомный набор
да ладно, ну ок, simd чтение в libc всегда aligned
источник