Nano Hash - криптовалюты, майнинг, программирование

Адреса в ассемблерном коде и ле

Если я скажу:

lea (%eax,%eax,2), %edx

Меня учили, что это, по сути, означает:

edx = eax + eax * 2

Как формат к этому работает?

И я думаю, это подводит нас ко второму вопросу. Если у меня что-то вроде этого:

add -0x4(%esi, %ebx, 4), %eax

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

cmp %eax, (%esi, %ebx, 4)

..., означает ли это, что значение% eax сравнивается со значением:

esi + ebx * 4

...? Я пробовал искать много такого материала, но, полагаю, я не использовал правильные слова, чтобы найти значимый ответ, поэтому я решил опубликовать здесь.


  • Ваши строки - это синтаксис ассемблера AT&T, используемый ассемблером Gnu (GAS). В Интернете есть несколько руководств. 22.04.2012

Ответы:


1

Вычисление значений с помощью lea напоминает ситуацию, когда эта операция была либо быстрее (поскольку она была рассчитана схемой, выполняющей вычисление адреса), либо меньше по размеру кода. Обратите внимание, что с помощью всего одной операции вы можете выполнить сложение и умножение всего за один шаг. Современные процессоры могут делать это быстрее вместо add, за которым следует mul, но это неясно, учитывая спекулятивное выполнение, репликацию арифметических единиц и т. Д.

Что касается следующих инструкций, всякий раз, когда вы видите круглые скобки, это означает, что вы разыменовываете этот адрес, поэтому:

add -0x4(%esi, %ebx, 4), %eax

означает вставить %eax то, что находится в адресе, заданном -4 + esi + ebx*4, поэтому подразумевается доступ к этой позиции в памяти и присвоение того, что там хранится, %eax.

22.04.2012
  • Я сомневаюсь, что коэффициент масштабирования когда-либо реализовывался как умножение, вероятно, это был просто сдвиг влево. 22.04.2012
  • Спасибо! Полагаю, я запутался в формуле при разыменовании. 22.04.2012
  • У вас там опечатка: это -4, а не +4. 22.04.2012
  • @ Габриэль, да, ты прав. Это сдвиг. Мой ассемблер заржавел, но идея в этом. Объединение двух операций в одну, если компилятору (или вам) удастся организовать вычисления таким образом. Кей: Ой, ты прав. Его отредактировал Бо Перссон. 22.04.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..