Size: a a a

Ассемблер

2021 August 22

DF

Dollar Føølish in Ассемблер
а, ну это да ты прав
источник

DF

Dollar Føølish in Ассемблер
внутри функции-то ломается часто
источник

DF

Dollar Føølish in Ассемблер
ну и про аргументы/переменные тоже правда
источник

DF

Dollar Føølish in Ассемблер
у раста особенно интересно с генерацией дебаг-инфо. На opt-level=2 barely юзабельна, а на opt-level=0 плакать хочется если дизасм посмотреть
источник

И

Игорь in Ассемблер
Я для теста сделал консоль, написал функцию перевода HEX значения в уникод и вывод координат курсора на экран консоли
источник

DF

Dollar Føølish in Ассемблер
смотри по поводу стека на винде, изначатльно он маленький, но там за последней страницей стоит гард-страница, которая выделяется по требованию и постоянно перемещается
источник

DF

Dollar Føølish in Ассемблер
так что для пользовательского приложения выглядит как будто стек и правда большой
источник

И

Игорь in Ассемблер
да не я не правильно выход из функции делал
источник

DF

Dollar Føølish in Ассемблер
но он не коммитится просто сразу, а по требованию
источник

d

disba1ancer in Ассемблер
Entusiast вот тебе ещё код для оптимизации:
.global memset
memset:
       dest    = 4
       val     = 8
       count   = 12
       cur     = edx
       end     = ecx

       mov     eax, val[esp]
       mov     ecx, 0x1010101
       mul     ecx

       mov     cur, dest[esp]
       mov     end, count[esp]
       add     end, cur

       cmp     cur, end
       jz      1f

       test    cur, 0x1
       jz      0f
       mov     [cur], al
       add     cur, 1

0:      cmp     cur, end
       jz      1f

       test    end, 0x1
       jz      0f
       sub     end, 1
       mov     [end], al

0:      cmp     cur, end
       jz      1f

       test    cur, 0x2
       jz      0f
       mov     [cur], al
       add     cur, 2

0:      cmp     cur, end
       jz      1f

       test    end, 0x2
       jz      0f
       sub     end, 2
       mov     [end], al

0:      cmp     cur, end
       jz      1f
       mov     [cur], eax
       add     cur, 4
       jmp     0b
1:      ret
источник

DF

Dollar Føølish in Ассемблер
хехе прикольно выглядит
источник

DF

Dollar Føølish in Ассемблер
а поясни за jc 1f
источник

И

Игорь in Ассемблер
работает)
источник

d

disba1ancer in Ассемблер
ща погоди, я этот почти ночью писал
источник

ВВ

Вячеслав Васютин... in Ассемблер
А почему 4 байта, если db - один байт?
источник

E

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

ВВ

Вячеслав Васютин... in Ассемблер
Я так и не понял, с каких делов тут 4 байта?
источник

DF

Dollar Føølish in Ассемблер
sizeof void*
источник

E

Entusiast in Ассемблер
В x86 адрес сколько байт?

0x400000: addr: db 0x10

mov eax, addr
EAX = 0x400000
источник

d

disba1ancer in Ассемблер
подправил, вопросы остались?
источник