Прошу прощение за создание новой темы! Просто хочется по быстрому получить ответы на все вопросы... Вдоволь наигрался с асмовыми вставками команд MMX и SSE2 в Дельфи 6. Теперь хочу попробывать вставить асм 64 в простую 32-прогу 1) Какая версия Дельфи может работать с регистрами RAX, RBX и т.д.? 2) Какой код может определить, поддерживается ли 64-бадья данным процом? 3) Не повесит ли асмовая вставочка-64 простую Винду-32? Что должно лежать в старших половинах регистров по выходу из процедуры? 4) Есть ли четкий стандарт на 64-бит инструкции, или у AMD свое, Intel свое? 5) Доп регистры R8-R16 везде есть?
persicum Нда а ещё спрашивают почему тут дельфи не разрешено... x64 работает только в вин 64 и только в приложениях x64. Если даже вин 64, а запущенная прога x32 то асм вставка х64 работать не будет. Ответ на этот вопрос гуглится в 5 мин.
Спасибо всем ответившим! Я знал что бить будут больно... Тока не пойму я, чтобы быстро перемножить два числа 64-бит за одну команду, мне че Висту64 ставить нужно 0: Не ожидал я такого западла...
Y_Mur Нормальные вопросы. Если человек только начал заниматься с 64 битами. У вас вон сишники ничуть не лучше. persicum 1) Не знаю я выше 7 не ставил. Вроде в 2009 планируется. А так можешь FreePascal поставить он вроде держит. 4) AMD и Intel как всегда договорились. Так что расхождений нет. Есть IA-32e это тоже самое что AMD64,то же самое x86-64. А вот IA64 это уже другая линейка Intel и там все по-другому. 5) В есть x86-64=AMD64=IA-32e 3) Повеситься. Вообще тут так. Есть 32битный код и 64битный смешивать можно только в разных процессах. В одном процессе смешивать нельзя. Поэтому программа может быть или целиком 32 битная или целиком 64 битная. 2) Если у нас exe-64 битный, то и проверять не нужно. Винда проверит за нас. В любом случаи для запуска 64битной программы нужна 64 битная ОСь. А если 32 битный и хочется проверить, то скорее всего есть какой-то API просто я не знаю это в MSDN смотреть надо. А так обычно проверяется через CPUID.
Выходит, делать x64 асм-вставочки для ускорения вычислений на подобии MMX в простую 32-разрядную прогу невозможно?
persicum Как с mmx не выйдет они пошли по другому пути -не совместимости. Вернее частично оставили в виде запуска 32 и 64 битных процессов/потоков. А в одном потоке нельзя совмещать 32 и 64 код. Оказывается дельфи 2009 пока 64 не держит. Нужно ждать comador или как-то так.
Можно добавить, что 64х-битные dll в 32-х разрядных процессах всё же есть - это, например, ntdll.dll и wow64.dll.