Pull to refresh

Comments 8

В статье не хватает вариантов и способов применения знания этого ассемблера.

По одной из ссылок статья, как человек ускорил выполнение функции за счёт переписывания на ассемблере, и оно сейчас работает в netflix.

Интересно, сколько бы он сэкономил, если бы просто заменил


lshift := rshift

if lshift&1 == 1 {
  lshift--
}

на


lshift := rshift & (~1)

Возможно в Go это записывается иначе, суть в том, чтобы просто обнулить последний бит.

Нисколько. Обе версии выполняются за одинаковое время. По крайней мере на моем haswell

Я понимаю, что это перевод, но вдруг переводчик знает. Что за $1 в функции add? Регистр какой-нибудь?

Это константа 1 в богомерзком синтаксисе AT&T
Возможно кому-то такой формат в дополнение к другим источникам будет полезен:
quasilyte.github.io/blog/post/go-asm-complementary-reference

Стараюсь все интересности туда по мере обнаружения (и добавления) дописывать.

Как будет готов AVX512, впишу туда детали (ссылка на обсуждения там приведена).
Sign up to leave a comment.