[asm] Помогите переписать процедуру под x64
|
dolphin
|
Дата: Среда, 03.04.2013, 21:12 | Сообщение # 1
|
Администратор
Сообщений: 897
Статус: Offline
|
Есть процедура
Доступно только для пользователей
Проблема в том что на х64 она не работает, кто поможет с этим вопросом?
Система: Windows 10 x64, Windows XP
Среды программирования: Delphi 7, Delphi 10 Seattle
Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
|
|
|
|
|
Волк-1024
|
Дата: Четверг, 04.04.2013, 00:08 | Сообщение # 2
|
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 463
Статус: Offline
|
Код прекрасно работает на Windows 8 Professional x64. Всё шифруется и дешифруется.
Доступно только для пользователей
В чем собственно заключается проблема? 
Pascal, C\C++, Assembler, Python
Сообщение отредактировал Волк-1024 - Четверг, 04.04.2013, 00:13
|
|
|
|
|
Don_Diego
|
Дата: Четверг, 04.04.2013, 01:17 | Сообщение # 3
|
Продвинутый
Зарегистрирован: 16.04.2012
Группа: Пользователи
Сообщений: 248
Статус: Offline
|
Offtop
|
|
|
|
|
Волк-1024
|
Дата: Четверг, 04.04.2013, 01:21 | Сообщение # 4
|
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 463
Статус: Offline
|
У меня тоже самое...
Pascal, C\C++, Assembler, Python
|
|
|
|
|
dolphin
|
Дата: Четверг, 04.04.2013, 01:34 | Сообщение # 5
|
Администратор
Сообщений: 897
Статус: Offline
|
Волк-1024, Проблеме в том что на 64-битном компиляторе не хочет компилироваться. На простой так же всё нормально. Просто наверно немного не так вопрос поставил 
По теме синтаксиса
Система: Windows 10 x64, Windows XP
Среды программирования: Delphi 7, Delphi 10 Seattle
Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
|
|
|
|
|
Волк-1024
|
Дата: Четверг, 04.04.2013, 01:47 | Сообщение # 6
|
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 463
Статус: Offline
|
Эмммм. под рукой нет x64 компилятора, но могу предположить, что нужно заменить регистры EAX, EDX на RAX и RDX, а
Код
procedure EncryptPass(SrcBuf: Pointer; BufLen: LongWord); assembler;
заменить на
Код
procedure EncryptPass(SrcBuf: PInt64; BufLen: Int64); assembler;
Не знаю, что насчет регистра CL(ECX)... Т.к на x64 ассемблере я почти не кодил...
Pascal, C\C++, Assembler, Python
Сообщение отредактировал Волк-1024 - Четверг, 04.04.2013, 01:50
|
|
|
|
|
dolphin
|
Дата: Четверг, 04.04.2013, 01:59 | Сообщение # 7
|
Администратор
Сообщений: 897
Статус: Offline
|
Волк-1024, и на том спасибо, буду пробовать
Система: Windows 10 x64, Windows XP
Среды программирования: Delphi 7, Delphi 10 Seattle
Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
|
|
|
|
|
dolphin
|
Дата: Пятница, 03.05.2013, 11:01 | Сообщение # 8
|
Администратор
Сообщений: 897
Статус: Offline
|
Актуально!
Система: Windows 10 x64, Windows XP
Среды программирования: Delphi 7, Delphi 10 Seattle
Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
|
|
|
|
|
Волк-1024
|
Дата: Пятница, 03.05.2013, 16:36 | Сообщение # 9
|
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 463
Статус: Offline
|
Спокойно компилируется в Lazarus'е x64, если добавить перед asm деррективу {$ASMMODE intel}
--------------------------------------------------------------------------
Ан нет. Там же ведь идет смешение 32 и 16 битного кода...
Еще кстати функция не будет шифровать правильно данные, если длина ключа больше чем размер данных в TXorData
Я думаю, чтобы не заморачиваться на asm лучше написать это дело на Delphi...
Pascal, C\C++, Assembler, Python
Сообщение отредактировал Волк-1024 - Пятница, 03.05.2013, 17:33
|
|
|
|
|