строчки на 69, 70ой строчке добавляет к j такую странную константу.
Откуда он ее взял? 1073741824
https://godbolt.org/z/eT63oeG6P
У меня все заканчивается на тридцать какой-то строке
я про ассемблерный код
Может быть, конкретный адрес?
по идее это константа
Это 0x4000 0000
ну да, а что это дает Очень странно все равно
Я сейчас не могу посмотреть, предполагаю, это начало области, где размещаются твои переменные.
Это вычисление элемента по j - 1. Там вот такое: (j + 0x40000000 - 1) * 4 (по модулю 2**32). Если ты раскроешь скобки, то получишь (0x100000000 + j * 4 - 4) & 0xffffffff.
Стало понятней! Спасибо. Только вот вопрос: & 0xffffffff зачем?
Ну чтобы подчеркнуть, что регистр 32-битный, и он тебе результат обрежет.
А ты понял, откуда взялось 0x100000000?
а зачем после этого идет subs тогда
У тебя самого-то идеи есть? Ведь если убрать сложение в этом коде, ничего не изменится. Это имело бы смысл, если бы регистры были 64-битные, и мы бы решили в них считать арифметику с переполнением для uint32_t.
Я предположил, что это начало блока памяти
Обсуждают сегодня