Size: a a a

Ассемблер

2021 August 31

s

s54816 in Ассемблер
С накладными расходами на вызов date не то что наносекунды — там даже миллисекунды считать нет смысла.
источник

E

Entusiast in Ассемблер
А цель с date не считать, а понять - что быстрее. Считать из-под ОС вообще дело странное.
Да и не так уж и много, один date +%s%N - ~2344746 ns (~2.3447 ms)

Ну можно и посчитать))
источник

d

disba1ancer in Ассемблер
.global _user_memset2
_user_memset2:
       dest    = 4
       val     = 8
       count   = 12
       cur     = edi
       size    = ecx

       movzx   eax, byte ptr val[esp]
       mov     ecx, 0x1010101
       mul     ecx
       mov     edx, edi

       mov     cur, dest[esp]
       mov     size, count[esp]

       test    size, size
       jz      1f

       test    cur, 1
       jz      0f
       stos    [cur], al
       lea     size, [size - 1]

0:      test    size, 1
       jz      0f
       mov     [cur + size - 1], al
       lea     size, [size - 1]

0:      test    cur, 2
       jz      0f
       stos    [cur], ax
       lea     size, [size - 2]

0:      test    size, 2
       jz      0f
       mov     [cur + size - 2], ax
       lea     size, [size - 2]

0:      shr     size, 2
       rep stos [cur], eax

1:      mov     edi, edx
       mov     eax, dest[esp]
       ret
получил значительный прирост производительности с этой версией, чуть более 4ёх раз по сравнению с более ранней версией без rep stos
PS: это 150 заполнений по 100 МБ
источник

d

disba1ancer in Ассемблер
единственное что напрягает, то что если конец заполняемой области не выровнен, будет обращение в её конец, и только после этого область будет заполнена от начала к концу
источник

d

disba1ancer in Ассемблер
с приоритетом реального времени второго варианта немного хуже по отношению к первому, да и к предыдущим результатам, тоже
источник

d

disba1ancer in Ассемблер
в общем прирост порядка 3ёх раз, я бы сказал не плохо
источник

d

disba1ancer in Ассемблер
источник

d

disba1ancer in Ассемблер
хм, в диспетчере частота прыгает, а в этой штуке стабильно показывает
источник
2021 September 01

HH

H H in Ассемблер
Ребят, кто занимается веб пентестом на хорошем уровне?
источник

D

Den in Ассемблер
Блин че то я в тупике, умножаю 0x3B9ACA00h на 0x09h должно получиться 0x218711A00h а получается 0x18711A00h и переполнение, какое, непонятно, ну значит единичка и в итоге добавляю единичку и выходит 0x118711A00h а как бы понять какая итерация переполнения? :)
источник

A

Aleksandr in Ассемблер
Покажи как умножаешь, на всякий случай
источник

D

Den in Ассемблер
imul ebx, ecx
adc edx,0
вот, соответственно 09 ebx и 0x3B9ACA00h в ecx
источник

D

Den in Ассемблер
а adc только единичку в edx добавляет
источник

A

Aleksandr in Ассемблер
А, так все верно. Если используешь два операнда то результат урезается до размера регистра, а CF - просто флаг того что пришлось урезать. Получить полный результат, если он выходит за рамки размера регистра, таким образом не удастся
источник

A

Aleksandr in Ассемблер
Если хочешь получать значения которые превысят размер регистра - используй imul с одним операндом. Тогда вторым операндом будет EAX, а результат сохранится в пару регистров EDX:EAX
источник

D

Den in Ассемблер
О спасибо большое! Это то что нужно а то я всю голову сломал на этом :))
источник

A

Aleksandr in Ассемблер
Если кажется что команда ведет себя странно - открой официальную документацию на нее, почитай описание и псевдокод работы. Очень помогает.
источник

D

Den in Ассемблер
Да сам себя запутал уже, только ведь использовал эту пару edx:eax и забыл :)
источник

ЕP

Егор Popov in Ассемблер
.
источник

楽園松本 in Ассемблер
Что такое reset?
источник