Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2018.02.25;
Скачать: [xml.tar.bz2];

Вниз

Вопрос знатокам асм   Найти похожие ветки 

 
Dmk ©   (2016-02-26 17:44) [0]

Почему если указать например такой код:
movd mm0, eax, то Delphi заменяет его на такой: movq mm0, rax. Постоянно такая «лажа». Глюк или настройки? Может чего не знаю?


 
Rouse_ ©   (2016-02-26 17:51) [1]

Байткот покажи, мошт там дизасм косячит


 
Dmk ©   (2016-02-26 18:29) [2]

http://hkar.ru/GYBv

AColor и APixel соответственно ColorRef на входе в функцию. т.е. uint32


 
Rouse_ ©   (2016-02-26 18:49) [3]

Абсолютно логичный код. В чем проблема именно?
Ты же не изумляешся когда у тебя булевая переменная в целом регистре идет?


 
Rouse_ ©   (2016-02-26 18:59) [4]

ЗЫ: судя по твоей картинке AColor и APixel входные параметры.
Ты ухохочешся их через по другому (не считая стека) передавать.
Пусть они хоть байтовыми будут - CL вместо RCX ты не получишь.


 
Dmk ©   (2016-02-26 19:00) [5]

я его прошу сделать MOVD, т.е. uint32, а он мне 64 бита запихивает MOVQ, т.е. uint64. Замена происходит MOVD на MOVQ. В этом и проблема. Мне старшие биты mm0 нужны, а он мне их чистит.


 
Rouse_ ©   (2016-02-26 19:05) [6]

А что ты хотел?
Никто не говорил что будет легко :)


 
Dmk ©   (2016-02-26 19:06) [7]

А если написать movd mm0, ecx, то операнд сайз мисматч получается.


 
Rouse_ ©   (2016-02-26 19:07) [8]

Версия дельфи?


 
Dmk ©   (2016-02-26 19:12) [9]

XE6.


 
Dmk ©   (2016-02-26 19:14) [10]

Если без REX префикса забросить, то все нормально работает. Компилятор чудит.
db $0F, $6E, $E1 - так работает как MOVD mm0, ecx. А может он тупо REX везде подставляет из-за 64 битного режима.

Из интеловского руководства:
0F 6E /r
MOVD mm, r/m32
RM V/V MMX Move doubleword from r/m32 to mm.
REX.W + 0F 6E /r
MOVQ mm, r/m64
RM V/N.E. MMX Move quadword from r/m64 to mm.


 
Rouse_ ©   (2016-02-26 19:28) [11]

Я знаю что такое REX префикс и прочие ModRM/SIB

movd mm0, ecx

В ХЕ4 работает без выдачи сообщения, как у тебя.

Это первое.

Второе:
байткод db $0F, $6E, $E1 соответствует регистру mm4, а ты хотел работать с mm0.
Для этого нужно писать вот так:
db $0F, $6E, $C1

Третье - впрочем с третьим я пока обожду.


 
Rouse_ ©   (2016-02-26 19:32) [12]

Вообще, если честно я очень сильно вангую в эту вету han_malign-а, потому что я умею только технически разьяснять, а он по правильному, чтоб ты понял :)


 
Dmk ©   (2016-02-26 19:34) [13]

>Я знаю что такое REX префикс и прочие ModRM/SIB
Дык я с поклоном :) Без намеков всяких.

На самом деле не важно какой из mmX, просто непонятно почему он заменяет на свой вариант.


 
Rouse_ ©   (2016-02-26 19:43) [14]

Ну как-же так? Я ж еще в четвертом посте заострил на этом внимание :)


 
Rouse_ ©   (2016-02-26 19:48) [15]

Все таки вангую han_malign-а :)
У него получается популярно и просто все обьяснить :)


 
invis ©   (2016-02-26 20:23) [16]


> Мне старшие биты mm0 нужны, а он мне их чистит.

Судя по описанию, в любом случае будет чистить.

(* MOVD instruction when destination operand is MMX technology register *)
DEST[31:0] = SRC;
DEST[63:32] = 00000000H;
http://www.tptp.cc/mirrors/siyobik.info/instruction/MOVD%252FMOVQ.html



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2018.02.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.002 c
2-1456486666
ford
2016-02-26 14:37
2018.02.25
TWebBrowser - Control has no parent window


15-1469810835
MsGuns
2016-07-29 19:47
2018.02.25
Вот собираюсь в новую жизнь


2-1456545588
gedevan
2016-02-27 06:59
2018.02.25
Как быстро заполнить TreeView по данным ClientDataset


15-1470413637
andrd
2016-08-05 19:13
2018.02.25
Какую версию Embarcadero RAD Studio посоветуете?


1-1356093530
harisma
2012-12-21 16:38
2018.02.25
QuickReport: TQRband





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский