Size: a a a

2020 May 06

MM

Marsel Marsel in pro.asm
Евгений Красников (Jin X)
Не знаю про подобные, надо рассматривать конкретные.
И думать.
ну да, что то подобное встречал недавно типа n^2-1, тоже не понятно
источник

d

d1vunit in pro.asm
s54816
У тебя по ссылке есть LDR_DATA_TABLE_ENTRY, это и есть значение. Указатели в LIST_ENTRY указывают не на начало LDR_DATA_TABLE_ENTRY, а на соответствующий элемент LIST_ENTRY в этой структуре (там кроме InMemoryOrderLinks есть и другие, просто Microsoft не хочет их докуметировать). Чтобы получить указатель на всю структуру из указателя на элемент, нужно вычесть из указателя на элемент его офсет в структуре. Для Си у Microsoft есть макрос CONTAINING_RECORD, в ассемблере ты просто вычтешь 8 или 16, в зависимости от разрядности.
не понял что из чего вычитается
указатель на список -8 или - 16
?
источник

s

s54816 in pro.asm
d1vunit
не понял что из чего вычитается
указатель на список -8 или - 16
?
Ну офсеты же отличаются для 32-битной и для 64-битной системы. Посчитай сам, какой там там офсет у InMemoryOrderLinks.
источник

d

d1vunit in pro.asm
s54816
Ну офсеты же отличаются для 32-битной и для 64-битной системы. Посчитай сам, какой там там офсет у InMemoryOrderLinks.
где прочитать ?
источник

s

s54816 in pro.asm
d1vunit
где прочитать ?
Про что, про sizeof(void *)?
источник

КП

Король Плутин... in pro.asm
Евгений Красников (Jin X)
Ну ты подумай логически.
Если игроков n, то со сколькими другими игроками каждый может сыграть?
Вот 10 человек пришло. Один из них — ты. Со сколькими ты можешь сыграть?
Ну, если у кого-то шиза...
источник
2020 May 08

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in pro.asm
кто  салатик заказывал?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in pro.asm
мне кажется, или на потолке плесень?
источник

Ra

Ruslan aka DUDE in pro.asm
Aiwan ╭∩╮ (òÓ,) ╭∩╮
мне кажется, или на потолке плесень?
черная плесень
дорого
или кто-то этажом выше запустил новый крузис на ультрах)
источник

КП

Король Плутин... in pro.asm
Aiwan ╭∩╮ (òÓ,) ╭∩╮
мне кажется, или на потолке плесень?
Это волосня. Она побрилась.
источник

ЕК

Евгений Красников (J... in pro.asm
Такой интересный вопрос у меня.

Необходимо выполнить умножение 2-х длинных целых знаковых чисел длиной N слов, которые хранятся в дополнительном коде little-endian. Т.е. 2 — это 0002 0000 (hex, при условии, что слово = 16 бит, побайтно: 02 00 00 00), а -2 — FFFE FFFF (побайтно: FE FF FF FF).

Для примера возьмём простой алгоритм умножения (без Карацубы), где для C = A * B каждое слово числа A умножается на каждое слово числа B и записывается в C со сдвигом и суммированием (с переносом при переполнении).

У нас есть операции умножения знаковых чисел и беззнаковых, причём результат произведения может быть в 2 раза больше, чем множители. По моим наблюдениям, удобнее использовать беззнаковое умножение (каждой пары слов), например:

FFFE FFFF
x
0002 0000
=
FFFC 0001
+
0000 FFFE 0002
=
FFFC FFFF 0002

2-ку убираем, получаем
FFFC FFFF = -4, всё ок.
Именно поэтому 2-3-операндный imul в асме (где старшая часть произведения отбрасывается) используется как для знаковых чисел, так и для беззнаковых.

При знаковом умножении получается так:

FFFE FFFF
x
0002 0000
=
FFFC FFFF
+
0000 FFFC FFFF
=
FFFC FFFB 0000 0001

Какая-то ерунда. По крайней мере, это требует преобразования но не очень понятному мне алгоритму.

А теперь самое главное :)

Необходимо определить — было бы переполнения при умножении.
Понятное дело, что если мы вылезли за диапазон N слов, то переполнение было.
А если нет?

Я пока вижу только такой алгоритм: умножать абсолютные значения множителей (C = abs(A)*abs(B)), поменять знак произведения, если знаки A и B отличаются и сравнить знак результата с тем, что должно получиться (т.е. если знаки A и B разные, значит должно получиться отрицательное число).

Это работает, но это, опять же, лишние операции по проверке и изменению знаков, к тому же, нужно ещё проверять множители на 0, т.к. при нуле результат не будет отрицательным, что может выдать ложный сигнал переполнения.

Вопрос: можно ли (и самое главное, как — по какому алгоритму) определить переполнение после умножения без приведения исходных множителей к абсолютным величинам?

Если нужно, алгоритм умножения можно чуть-чуть модифицировать (добавив что-то или заменив какие-то операции).
Цель — упрощение кода.
источник
2020 May 09

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in pro.asm
#book ЭФФЕКТИВНОЕ ПРОГРАММИРОВАНИЕ СОВРЕМЕННЫХ МИКРОПРОЦЕССОРОВ
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in pro.asm
Aiwan ╭∩╮ (òÓ,) ╭∩╮
#book ЭФФЕКТИВНОЕ ПРОГРАММИРОВАНИЕ СОВРЕМЕННЫХ МИКРОПРОЦЕССОРОВ
источник
2020 May 10

RG

R G in pro.asm
Здравствуйте, объясните пожалуйста, могут ли ехе файлы грузиться не по ImageBase? Я смотрел и в дизассемблере и в хекс редакторе, вижу что внутри ехе используются абсолютные вирт адреса, таблицы релокаций нет. Получается, их можно грузить только по 0х00400000 ?
источник

ЕК

Евгений Красников (J... in pro.asm
R G
Здравствуйте, объясните пожалуйста, могут ли ехе файлы грузиться не по ImageBase? Я смотрел и в дизассемблере и в хекс редакторе, вижу что внутри ехе используются абсолютные вирт адреса, таблицы релокаций нет. Получается, их можно грузить только по 0х00400000 ?
Если ASLR отключен, то не может, даже при наличии релокаций. Если включен, то должны быть релоки. Если их нет, то либо ошибка будет, либо по базовому адресу грузиться будет, точно не скажу.
источник

ЕК

Евгений Красников (J... in pro.asm
ASLR — отделений бит в заголовке.
источник

RG

R G in pro.asm
ясно, спасибо
источник

ЕК

Евгений Красников (J... in pro.asm
R G
ясно, спасибо
Есть ещё, правда, принудительное использование ASLR, как-то включается в ОС, даже если в заголовке отключено. Но без релоков тут никак.
источник
2020 May 11

СК

Сергей К in pro.asm
есть знакомый препод, по вычислительной технике, застал момент ввода в работу ламповых компьютеров, на них же работал
источник

СК

Сергей К in pro.asm
думаю, как заинтересовать его в онлайн активности, может архитектуру ЭВМ рассказать с нуля
источник