Size: a a a

Ассемблер

2021 May 19

Ш

Шевчук in Ассемблер
что от меня хотят, как писать код 😂
источник

Д

Дмитрий in Ассемблер
Само не напишется, нужно приложить немного усилий. 1. Ознакомиться с системой команд 8051. 2. Распечатать схемы стенда и системы команд, чтобы перед глазами были. 3. Уяснить задание! 4. Разработать алгоритм. 5. Написать софт. Усё 🙌
источник

D

Den in Ассемблер
а, да, действительно пропустил про bcd вот так по диагонали нельзя конечно такие книжки читать :)
источник

D

Den in Ассемблер
я про использование bcd формата только в mmx регистрах где то вроде читал, а так не использовал, асмовские комманды основные же типа div mul вроде такого формата не поддерживают? ну если не по одной цифре да и то с оговорками
источник

D

Den in Ассемблер
и всеравно у него ошибка, двоичный вариант у него 11 :) а BCD тогда правильно
источник

d

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

MA

Max Azatian in Ассемблер
не там, какие-то другие траблы были
источник

MA

Max Azatian in Ассемблер
(сорян ща не вспомню что именно)
источник

АШ

Алексей Шведов... in Ассемблер
Кто писал методы Run PE in Memory на ассемблере?
Хочу посмотреть реализацию
источник

MA

Max Azatian in Ассемблер
есть для флоатов 32битные регистры? чтобы одинарную "флоат*флоат" операцию провести
источник

MA

Max Azatian in Ассемблер
если их в GPRки закинуть, то они как целые числа перемножатся
источник

s

s54816 in Ассемблер
Можно точность в control word выставить, можно через SSE считать.
источник

MA

Max Azatian in Ассемблер
SSE для флоат*флоат маленько перебор - там оверхед для такой простой операции большой
а как первое делать?
источник

s

s54816 in Ассемблер
push    eax ; Можно отдельную переменную выделить.
fstcw   word[esp]
and     word[esp],not 0x300
fldcw   word[esp]
pop     eax

А зачем это нужно вообще?
источник

MA

Max Azatian in Ассемблер
считаю
a[i]  =b[i]*alpha + a[i]
источник

s

s54816 in Ассемблер
Такое самое то пачками через SSE считать!
источник

MA

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

MA

Max Azatian in Ассемблер
я сейчас пытаюсь оптимизировать те случаи, когда в массивах по 3 флоата и меньше и дошел до этого :
movss xmm0, [rsp] //alpha

second:

 movss xmm1, [rsi + rcx] //x[i]

 mulss xmm1, xmm0 //alpha * x[i]

 movss xmm2, [rdx + rcx] //y[i]
 addss xmm1, xmm2 //alpha * x[i] + y[i]

 movss [rdx + rcx], xmm1 //new y[i]

 add rcx, 4
 cmp rcx, rax
 jl second
этот код можно еще лучше оптимизировать? или все, это предел?
источник

a

asm in Ассемблер
Добро пожаловать ♦️♠️ilindermin♣️♦️. Не ответив на вопрос, будешь удалён из чата
источник

s

s54816 in Ассемблер
Ну разве что убрать второй по счёту movss (дальше тебе значение не нужно, а addss сам умеет с памятью работать) и развернуть цикл (сдублировать вот эти операции и проверку, но прыгать не назад, а вперёд, к концу). Но я не уверен, сделай бенчмарк и попробуй.
источник