Size: a a a

Ассемблер

2021 September 06

E

Entusiast in Ассемблер
🤨
И чем же мой пример не понятен?
Я хочу услышать определение для адресной арифметики. Что там скрывается такого под арифметикой адресов, что нельзя сделать на ассемблере, или чего нет в ассемблере?

Спойлер: пока что арифметические операции в ассемблере есть, и, к счастью, адреса (указатели) тоже
источник

s

s54816 in Ассемблер
Мы делаем ptr + 2 в Си и ассемблере, получаем разные результаты при одинаковом значении ptr… и 2 тоже, да. Значит чего-то всё же в ассемблере нет.
источник

E

Entusiast in Ассемблер
Ну ладно, значит адресная арифметика это чисто Сишный синтаксис, без разницы, что там внутри. Если пишем +1, значит это уже не +4

Я бы ещё понял, если бы с умными указателями генерировался огромный код, но нет! Компилятор просто заменяет цифру. Ну если это для тебя совсем разные вещи, т.е по итогу на ассемблере адресная арифметика реализуется, но "не реализуется", тогда нет смысла что-то доказывать

ptr dd num1
num1 dd 1
num2 dd 2

add dword[ptr], 4 == ptr++ // ptr += 1
Адресной арифметики нет, потому что пишем 1, а компилятор делает 4, значит в ассемблере её тоже нет. Понял.
источник

s

s54816 in Ассемблер
Я рад, что ты со мной согласен. Зато на ассемблере ты иногда можешь сделать ptr dd ptr * ptr, а в Си нет такой операции. Надеюсь, тебя это утешит.
источник

E

Entusiast in Ассемблер
Я не согласен с тобой))
Всего-лишь минутка прояснения происходящего
источник

E

Entusiast in Ассемблер
Зато на ассемблере ты иногда можешь сделать ptr dd ptr * ptr
Вменяемый человек такого никогда делать не будет.
Адресная арифметика реализуется и на ассемблере, всего-лишь если открыть глаза, и посмотреть на размер данных
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
источник

楽園松本 in Ассемблер
Мне нравится такое объяснение: нечто N является тем, что можно с этим N делать.

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

А Си это любовь жизни.
источник

AV

Artem Vakhrushev in Ассемблер
коллеги, что означает вот эта запись ? cmp [rdx+rcx], byte 0
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
сравнить байт памяти по адресу rdx+rcx с нулем
источник

AV

Artem Vakhrushev in Ассемблер
а почему нельзя написать cmp [rdx], byte 0?
источник

AV

Artem Vakhrushev in Ассемблер
ааа сорян понял... далее идет inc rcx
источник

AV

Artem Vakhrushev in Ассемблер
еще вопрос кода используется  rdi и rsi?
источник

ВН

Восемь Ног in Ассемблер
НУ НАКОНЕЦ ТО
источник

БЗ

Богдан Зараник... in Ассемблер
И не говори!
источник

E

Egor in Ассемблер
Здравствуйте, дорогие 👭👬👫
Подскажите, как получить данные перемещения мыши? Желательно в двух числах типа как x, y.
Значения не обязательно должны быть привязаны к какому либо центру осей координат. Заранее спасибо.
источник

A

Aleksandr in Ассемблер
Смотря в какой среде
источник

Д

Данил in Ассемблер
І де питання?)
источник

AP

Andrey P in Ассемблер
Чому я не сокіл, чому не літаю?
источник

AP

Andrey P in Ассемблер
Шутка. Про ассемблер спросят другие )
источник