ФлеймФорумПроЭкты

Нуб вкатывается в Ассемблер ! (12 стр)

Страницы: 17 8 9 10 11 12
#165
11:01, 21 фев 2023

Dmitry_Milk
> Проблема остается только с регистрами, когда приходится помнить, что в данный
> момент лежит в регистре.
в Fasm-e было сделано именование (а может не только в Fasm-е). И вместо регистра ставилось имя. А регистры прописывались выше к именам. сейчас может уже сделали чтоб компилятор сам регистры выставлял.

=A=L=X=
> просто начинаешь делать рутинную работу которую автоматически делают
> компиляторы языков высокого уровня, а когда они еще хорошо оптимизированные, то
> даже хуже их.
> А в целом само по себе программирование получается довольно прямолинейное,
> практически классическое
Так не делается. Делаются наработки и их используют в дальнейшем. Смысла постоянно оптимизировать код нет, особенно если пишешь код под разные технологии. Это надо делать прекомпилятор встроенный в программу, тогда этот прекомпилятор будет смотреть что за машина на которой он запустился и компилировать уже код до конца, с нужными оптимизациями (интересно, кто-то этим заморочился?).
  Оптимизировать надо, в основном, статические данные. Компилятор этого, зачастую не сделает, а человек такие данные может увидеть и произвести их вычисление до момента их использования. По этой причине ни один компилятор не выиграет у человека на данный момент в оптимизации (если человек умеет в оптимизацию).
  А в мелочах - да, маловероятно выиграть у хорошо оптимизирующего компилятора. Но зато у него иногда можно подсмотреть код. )))

#166
11:03, 21 фев 2023

Noir
> а комментить каждую инструкцию это x1000 работа.

Ну во первых не в x1000, а максимум раза в два, во вторых каждую прям инструкцию не надо, надо давать ясно понять что они делают. Распавшиеся на отдельные инструкции асма вещи сложно считывать, хотя они могут быть очень простыми типа a = 10 * b + c; - описать это очень просто и потом не надо морщить лоб что там за b << 3 + b << 1 + c в виде асмоинструкций происходят.

#167
11:08, 21 фев 2023

=A=L=X=
дело в том, что столько же текста нужно будет написать в хайлвевел языке , и это будет самим кодом.

вот щас заглянул. уже с набегу не могу понять что я тут хотел изобразить))))
команды перетасовки всегда добавляют определенной загадочности такому коду

function TD3DQuaternion.Normalized: TD3DQuaternion;
{$IFDEF CPUX64}
 asm
  movups  xmm0, [Self]    // W Z Y X
  movaps  xmm2, xmm0  // Dot(A, A)
  mulps   xmm0, xmm0      // W*W Z*Z Y*Y X*X
  pshufd  xmm1, xmm0, $4E // Y*Y X*X W*W Z*Z
  addps   xmm0, xmm1      // (Y*Y+W*W) (X*X+Z*Z) (Y*Y+W*W) (X*X+Z*Z)
  pshufd  xmm1, xmm0, $11 // (X*X+Z*Z) (Y*Y+W*W) (X*X+Z*Z) (Y*Y+W*W)
  addps   xmm0, xmm1      // (X*X + Y*Y + Z*Z + W*W) (4x)

  sqrtps xmm0, xmm0      // (1 / Sqrt(X*X + Y*Y + Z*Z + W*W)) (4x)
  divps   xmm2, xmm0      // A * (1 / Sqrt(Dot(A, A)))
  movups  [Result], xmm2
 end;
#168
22:03, 21 фев 2023

Эй !
Вы тут это, не разгоняйтесь ! :)
А то начнете, все на асме писать :)

Страницы: 17 8 9 10 11 12
ФлеймФорумПроЭкты

Тема в архиве.