Я испытал Обработчик Копий , и он работает очень хорошо. Это имеет некоторые замечательные функции, где можно управлять буферизацией в зависимости от типа медиа и с поддержкой организации очередей файла, таким образом, можно установить копию и операции пересылки и забыть о них и минимизировать дисковую фрагментацию одновременно. Таким образом, это не скопирует несколько файл одновременно от единственного CD или DVD, поскольку это заставило бы диск искать слишком много.
Лучше всего всего его Открытого исходного кода.
Для начала размер указателя составляет 8 байтов вместо 4.
Регистры также могут содержать 64-битные значения.
Также часто бывает много различий на уровне ОС. . Например, в Windows у вас есть такие вещи, как перенаправление файловой системы и перенаправление реестра (WOW64) при запуске 32-битных приложений в 64-битной ОС Windows.
Гм, стек? Вы имеете в виду физический (стек E / RSP)? Если так, то мой ответ уместен:
На x86 почти каждый компилятор C использует стандарт вызова cdecl
. Я не могу вспомнить подробностей о нем, но он был одинаковым для компиляторов и операционных систем. По сути, аргументы помещаются в стек (справа налево), а затем возвращаемое значение помещается в eax, и вызывающий объект отвечает за очистку.
Однако на x86-64 все довольно запутано. Соглашение о вызовах Windows отличается от linux (большинство unix-подобных ОС, отличных от Linux, сохранили исходный стандарт вызовов C, хотя это приводит к еще большим неприятностям). Не могу вспомнить, чем они отличаются, но они есть. Поищите в Google «различные соглашения о вызовах x86-64», и вы найдете их подробности.
см .: http: // en. wikipedia.org/wiki/X86_calling_conventions#Microsoft_x64_calling_convention
Все регистры в процессоре x86 являются 32-разрядными, тогда как для 64-разрядных - 64-разрядных :)
Если вы используете арифметику указателя, тогда sizeof () даст разные результаты и как и операция incrment.
Я чувствую, что вы можете получить подробную информацию на сайте Intel о двух архитектурах, а также даже о наборе инструкций, выделяющем новые инструкции, добавленные с помощью 64-битных процессоров.
В дополнение к тому, что регистры общего назначения теперь 64-битные вместо 32, также есть новые регистры: r8, r9, r10, r11, r12, r13, r14 и r15. Тот факт, что регистров больше, также приводит к тому, что большинство компиляторов используют соглашения о вызове по регистрам для вызовов функций (кроме тех, у которых есть varargs), тогда как в x86 большинство компиляторов помещают все аргументы в стек.
x87 FPU также устарел, предпочитая SSE.
Во всех ответах здесь упоминаются изменения в наборе регистров, которые я перечислю здесь для полноты:
EAX
расширен до RAX
и так далее) R8
- R15
) XMM8
- XMM15
) Также есть изменения в режимах адресации:
0x0
, а их предел - 0xffffffffffffffff
. FS и GS могут иметь базу более 32 бит. 0x0
до 0xfffffff
. В 64-битном режиме линейное адресное пространство делится с 0x0
на 0x00007ffffffff
и с 0xffff800000000000
на 0xffffffffffffff
. В основном адрес имеет только 48 битов, а адрес расширен по знаку до 64 бит. Различные инструкции были удалены:
INC
инструкции с кодировкой 40+ rw
и 40+ rd
. Байт 4 x
стал префиксом REX
. LDS
, LDS
, LSS
. Есть и другие отличия, которые я просто припоминаю. Я добавлю их, если придумаю еще.
В x86 имеется 8 32-битных регистров, в x64 регистры по 64 бита каждый и их еще 8. 128-битные регистры SSE имеют по 128 бит в обоих, но на x86 их 8, а на x64 их 16. Также некоторые инструкции были вырезаны в x64.
В режиме x64 вы все еще можете использовать регистры как 32-битные, используя их 32-битные имена (начинающиеся с 'e') вместо их 64-битных имен (начиная с 'r' ), и сборка будет в основном такой же.
http://en.wikipedia.org/wiki/X86#x86_registers
Или, если вам нужно действительно тяжелое чтение (например, тысячи страниц ...)
http://www.intel.com/products/processor/manuals/index.htm Я прочитал несколько сотен страниц этих руководств и узнал много, действительно полезного.
Хотя я не думаю, что это конкретно ответ x86 или x64, он может быть актуальным.
В Linux под x86 стек равен 4k или 8k, а под x64 - 16k.
Я считаю, что статья в Википедии, на которую вы ссылаетесь, предоставляет разумный объем вводной информации. Если вас интересуют конкретные детали различий в длинном режиме, вы можете обратиться к одной из официальных ссылок: Руководства разработчика программного обеспечения для архитектур Intel® 64 и IA-32 .