Обеспечение Программы, Записанной для 32-разрядного Windows, Совместимо с 64-разрядным Windows

Как условие, так и принуждение используют булеву логику js (вы можете проверить стандарт ECMA-262 для получения более подробной информации), в то время как булев конструктор фактически сам реализует эту логику.

Поэтому скорость / производительность -> Boolean () побеждает. Принципы / практика / и т.д.. -> в зависимости от стиля кода, который вы используете

11
задан Kurt W. Leucht 20 February 2009 в 02:50
поделиться

8 ответов

Лучшее объяснение, которое я нашел, предлагается здесь, который в основном говорит, что 32-разрядные программы запущены на слое эмуляции, которая не предоставляет системный доступ, который Вы получили бы из собственных программ, запущенных в 64-разрядной среде:

http://blogs.msdn.com/oldnewthing/archive/2008/12/22/9244582.aspx

Я предположил бы, что это означает, что проблемы с программами как GTA4 возникают из слоя эмуляции, не приводящей к ожидаемым результатам, найденным в 32-разрядной собственной системе. Поэтому Вы продолжаете видеть обновления совместимости выпуска Microsoft все время.

Вот то, что MSDN должен сказать о вопросе:

http://msdn.microsoft.com/en-us/library/bb427430 (По сравнению с 85) .aspx

4
ответ дан 3 December 2019 в 06:23
поделиться

Существует большая дезинформация на этом потоке.

Когда 32-разрядное приложение запущено на 64-разрядных окнах:

  • Большинство проблем совместимости возникает, когда приложение пытается установить драйвер привилегированного режима. 32-разрядный драйвер не может быть установлен на 64-разрядной ОС. Это - amost, конечно, проблема с брандмауэром. Это пытается сцепиться в стопку драйвера TCP/IP.
  • НЕТ НИКАКОГО ЭМУЛЯТОРА! 32-разрядный объектный код выполнен CPU полностью исходно в полной скорости.
  • Нет никакой поддержки старого 16-битного кода. Это повредило много установщиков.
  • Доступ к правильным папкам обычно является не проблемой. Когда 32-разрядная программа открывает файл в, скажите %windir %\system32 \, ОС автоволшебно перенаправляет его к %windir %\syswow64. То же для определенных частей реестра. Здесь существует несколько потенциальных глюков, но они обычно вроде предположения, что различные WINAPI Добираются... Каталог () функции возвращают те же строки, которые они сделали в Windows 95.
  • Было ли это скомпилировано 10 лет назад или только вчера, затем указатели C/C++ составляют все еще 32 бита (4 байта) и весь код, который просто предположил что - включая SendMessage ()! - все еще работы. 8-байтовая проблема указателя не входит в изображение, пока Вы не начинаете преобразовывать в 64-разрядные компиляторы.
7
ответ дан 3 December 2019 в 06:23
поделиться

Драйверы являются другой историей, которую это программирует: http://support.microsoft.com/kb/896456

Зональное Предупреждение использует специальный 32-разрядный драйвер, созданный Контрольной точкой, чтобы сделать контроль. Это, вероятно, что создает проблему с тем приложением. Что касается Grand Theft Auto 4?Понятия не имею.

3
ответ дан 3 December 2019 в 06:23
поделиться

Могут быть всевозможные причины.

Любое приложение, которое является запрограммированной рекламой низкий уровень, могло бы ожидать регистр на 32 бита. Зональный Сигнальный драйвер, отправленный novatrust, является хорошим примером. GTA4 мог бы использовать блок для улучшения производительности в нескольких точках, которые могли бы закончиться на чем-либо или даже просто принятии 32 битов на C++. Например, возьмите следующий код:

struct GPoint
{
  int x;
  int y;
}

// Array of twenty GPoints
GPoint[] myArr = malloc(20 * sizeof(GPoint);

GPoint* myPointer = myArr;
int index = GetIndexAffectedPoint();

// Invert X and Y for the point
myPointer += 8*index;
swap(myPointer);

Я знаю, что пример довольно наивен, но так или иначе, в том коде Вы предполагаете, что Вы - структура, 8 байтов длиной (4 байта x целого числа и 4 байта для y целого числа), но в системе на 64 бита на самом деле дважды, что долго, таким образом, Вы закончите тем, что подкачали неправильную точку..., подобные вещи происходят много на низкоуровневых языках, особенно при попытке улучшить производительность...

2
ответ дан 3 December 2019 в 06:23
поделиться

При использовании файловой системы или реестра удостоверьтесь, что Вы получаете доступ к правильным папкам. Как x86 программа Вы, вероятно, захотите к доступу "Программные файлы (x86)", "SysWOW64", "WOW6232Node" и такие папки вместо x64.

Продуктам с x86 приложениями как Norton и Зональное Предупреждение Контрольной точки не удается выполнить их x86 драйвер, поскольку драйвер должен к x64 смочь к, работал операционной системой.

0
ответ дан 3 December 2019 в 06:23
поделиться

Security applications are a bad example. They all perform unsupported things against undocumented things. Changes between one 32-bit version of Windows to the next are enough to break them, nevermind moving to 64-bit.

That said, there are some compatibility shims that fixup your code on 32-bit that won't when the app is 64-bit. This is because Microsoft assumes you've tested it on 64-bit.

One resulting gotcha is with .NET applications. When running on a 32-bit system, the exe is jitted to 32-bits - where there are compatibility shims to fix your bugs. If your customer happens to be running on a 64-bit system, the executable will be jitted to 64-bits, where those compatibility shims that were protected you from yourself are no longer present.

Chris Jackson had a nice blog entry about this: Shimming Applications on Windows Vista 64-Bit

1
ответ дан 3 December 2019 в 06:23
поделиться

The problem is probably drivers. With games, it's probably some kind of slimy DRM scheme. Try getting the no-CD crack for the game so you can run it without DRM.

1
ответ дан 3 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

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