Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка компиляции ассемблерной вставки, под x64 
V
    Опции темы
drkot
Дата 9.12.2012, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



[dcc64 Error]: E2116 Invalid combination of opcode and operands
на строку
Код

   PUSH    EBX


Насколько понимаю в x64 какойто другой ассемблер.
Что не так? Где почитать? 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Illusion Dolphin
Дата 9.12.2012, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Про регистры тут

EBX - 32
RBX - 64:
Код

  PUSH    RBX




--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
drkot
Дата 10.12.2012, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Спасибо


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
northener
Дата 10.12.2012, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(Illusion Dolphin @  9.12.2012,  23:32 Найти цитируемый пост)
Про регистры тут

О как!
Компилятор 32-х битной Дельфи позволял использовать во встроенном ассемблере в инструкциях PUSH/POP 16-ти разрядные регистры, но не позволял использовать 8-ми разрядные.
Теперь значит компилятор 64-х битной Дельфи позволяет использовать только 64-х разрядные регистры и никак иначе?
:(
Приму к сведению.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
drkot
Дата 30.12.2012, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



регистры можно использовать любые
но пуш работает с целыми регистрами


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Чучмек
Дата 30.12.2012, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Цитата(drkot @  30.12.2012,  16:35 Найти цитируемый пост)
но пуш работает с целыми регистрами

вранье. В дизассемблере видел push ebx для 64битного кода. Это просто делфа не компилит.

Это сообщение отредактировал(а) Чучмек - 31.12.2012, 01:17


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
drkot
Дата 30.12.2012, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



если не сложно покажи машинные коды для х64
push ebx
push rbx

а то сколько компиляторов столько и мнений


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
drkot
Дата 30.12.2012, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



x64

Test.pas.37: PUSH    BX
00000000006963C0 6653             push bx
Test.pas.38: PUSH    RBX
00000000006963C2 53               push rbx
Test.pas.39: POP     RBX
00000000006963C3 5B               pop rbx
Test.pas.40: POP     BX
00000000006963C4 665B             pop bx
Test.pas.41: end;
00000000006963C6 C3               ret


book

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  push.jpg 64,56 Kb


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Чучмек
Дата 30.12.2012, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Сейчас нет под рукой x64.
Через останов и Ctrl+Alt+C по F7 зайди в api-шную  функцию.В LoadLiabraryW  например.



--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Illusion Dolphin
Дата 30.12.2012, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Цитата

Через останов и Ctrl+Alt+C по F7 зайди в api-шную  функцию.В LoadLiabraryW  например.


:000007FEFDE3B7B0 ; C:\Windows\system32\KERNELBASE.dll

Код

000007FEFDE3B7B0 FFF3             push ebx  <-- вот оно :) 
000007FEFDE3B7B2 4883EC60         sub rsp,$60
000007FEFDE3B7B6 418BD8           mov ebx,r8d
000007FEFDE3B7B9 4885C9           test rcx,rcx
000007FEFDE3B7BC 7512             jnz $000007fefde3b7d0
000007FEFDE3B7BE B90D0000C0       mov ecx,$c000000d
000007FEFDE3B7C3 E8F85BFFFF       call $000007fefde313c0
000007FEFDE3B7C8 33C0             xor eax,eax
000007FEFDE3B7CA 4883C460         add rsp,$60
000007FEFDE3B7CE 5B               pop rbx
000007FEFDE3B7CF C3               ret



--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Чучмек
Дата 31.12.2012, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



push ebp  - FFF5
Сейчас посмотрел как работает - идентично push rbp
В чем прикол, не знаю. 
Баг в делфе.
Еще один баг - push (64битная константа).
Компилится как push (младшие 32 разряда) + db (старшие разряды) :(




--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1219 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.