169 похожих чатов

Прошу прощения за тупой вопрос, сделал тестовую DLL на Fasm

(x86-64, 64 бит, Windows), для вызова из python, в первом варианте я использовал mov для копирования адреса в регистр, и простое смещение, относительно него на 12 байт, для доступа к последнему элементу (1445) списка который я передаю в python, и всё правильно, работает, а во втором варианте я использовал инструкцию lea, ожидая что в rdi скопируется 8-ми байтовый адрес, второго элемента массива (даже если не указывать индекс, то printf всё равно возвращает неверный результат, вроде: 2323883616, 3052250720 ... и т.д.), но вместо этого туда попадает какой-то мусор, я судя по всему не совсем верно понял как работает инструкция lea, не подскажите в чем ошибка?

5 ответов

40 просмотров
*cr0x6fw;- Автор вопроса
*cr0x6fw;
screenshot

Во втором случае ты грузишь адрес самого аргумента (не массива) в стеке и адресуешь соответственно дальше стек.

s54820
Во втором случае ты грузишь адрес самого аргумента...

А кроме как подгрузить DLL больше нет в Python способа вызывать библиотеку? С .lib он не работает?

КТ315
А кроме как подгрузить DLL больше нет в Python спо...

Писать расширение и линковаться с либ. Ну это если без извращений.

*cr0x6fw;- Автор вопроса
s54820
Во втором случае ты грузишь адрес самого аргумента...

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

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта