Вопросы с тегом «x86-64»

x86-64 - это 64-битное расширение архитектуры Intel x86.

445
Почему GCC генерирует код на 15-20% быстрее, если я оптимизирую размер вместо скорости?

Я впервые заметил в 2009 году, что GCC (по крайней мере, в моих проектах и ​​на моих машинах) имеет тенденцию генерировать заметно более быстрый код, если я оптимизирую для size ( -Os) вместо скорости ( -O2или -O3), и с тех пор я удивляюсь, почему. Мне удалось создать (довольно глупый) код, который...

228
Почему GCC использует умножение на странное число при реализации целочисленного деления?

Я читал о div и mulсборочных операциях, и я решил , чтобы увидеть их в действии, написав простую программу в C: Файл деление.c #include <stdlib.h> #include <stdio.h> int main() { size_t i = 9; size_t j = i / 5; printf("%zu\n",j); return 0; } И затем генерирование кода на ассемблере gcc...

222
Почему введение бесполезных инструкций MOV ускоряет сжатый цикл в сборке x86_64?

Задний план: При оптимизации кода на Pascal со встроенным языком ассемблера я заметил ненужную MOVинструкцию и удалил ее. К моему удивлению, удаление ненужных инструкций привело к замедлению работы моей программы . Я обнаружил, что добавление произвольных, бесполезных MOVинструкций еще больше...

147
Каковы соглашения о вызовах для системных вызовов UNIX и Linux на i386 и x86-64

Следующие ссылки объясняют соглашения о системных вызовах x86-32 для UNIX (BSD-версия) и Linux: http://www.int80h.org/bsdasm/#system-calls http://www.freebsd.org/doc/en/books/developers-handbook/x86-system-calls.html Но каковы соглашения о системных вызовах x86-64 в UNIX и...

133
Возможная ошибка GCC при возврате структуры из функции

Я полагаю, что обнаружил ошибку в GCC при реализации PCG PRNG О'Нила. ( Исходный код в проводнике компилятора Годболта ) После умножения oldstateна MULTIPLIER(результат сохраняется в rdi), GCC не добавляет этот результат INCREMENT, перемещая INCREMENTвместо него значение rdx, которое затем...

133
Как узнать, скомпилирован ли собственный DLL-файл как x64 или x86?

Я хочу определить, соответствует ли собственная сборка x64 или x86 из приложения с управляемым кодом ( C # ). Я думаю, что это должно быть где-то в заголовке PE, поскольку загрузчик ОС должен знать эту информацию, но я не смог ее найти. Конечно, я предпочитаю делать это в управляемом коде, но при...

128
Как 128-битное целое число i128 в Rust работает в 64-битной системе?

Rust имеет 128-битные целые числа, они обозначаются типом данных i128(и u128для целых чисел без знака): let a: i128 = 170141183460469231731687303715884105727; Как Rust заставляет эти i128значения работать в 64-битной системе; например, как он делает с ними арифметические операции? Поскольку,...

119
Почему инструкции x86-64 для 32-битных регистров обнуляют верхнюю часть полного 64-битного регистра?

В x86-64 Tour of Intel Manuals я прочитал Возможно, самым удивительным фактом является то, что такая инструкция, как MOV EAX, EBXавтоматически обнуляет старшие 32 бита RAXрегистра. В документации Intel (3.4.1.1 Регистры общего назначения в 64-битном режиме в ручной базовой архитектуре), цитируемой...

111
Ориентация как на 32-битную, так и на 64-битную версию с Visual Studio в одном решении / проекте

У меня небольшая дилемма относительно того, как настроить мои сборки визуальной студии для множественного таргетинга. Предыстория: c # .NET v2.0 с вызовом p / в сторонние 32-битные библиотеки DLL, SQL compact v3.5 SP1 с проектом установки. Прямо сейчас целевая платформа установлена ​​на x86,...

110
Почему Windows64 использует другое соглашение о вызовах, чем все другие операционные системы на x86-64?

У AMD есть спецификация ABI, в которой описывается соглашение о вызовах для использования на x86-64. Все операционные системы следуют ему, за исключением Windows, которая имеет собственное соглашение о вызовах x86-64. Зачем? Кто-нибудь знает технические, исторические или политические причины этой...

105
Почему x86 уродлив? Почему он считается неполноценным по сравнению с другими? [закрыто]

В его нынешнем виде этот вопрос не подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, повлечет за собой дебаты, аргументы, опросы или расширенное обсуждение. Если вы считаете, что этот вопрос можно...

104
System.BadImageFormatException: не удалось загрузить файл или сборку (из installutil.exe)

Я пытаюсь установить службу Windows с помощью InstallUtil.exe и получаю сообщение об ошибке System.BadImageFormatException: не удалось загрузить файл или сборку ' {xxx.exe}' или одну из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом. Что дает? РЕДАКТИРОВАТЬ: (Не...

100
Вычисления с плавающей запятой и целочисленные на современном оборудовании

Я выполняю некоторую критическую для производительности работу на C ++, и в настоящее время мы используем целочисленные вычисления для задач, которые по своей сути являются плавающими, потому что «они быстрее». Это вызывает множество неприятных проблем и добавляет много надоедливого кода. Теперь я...

97
Почему системы x86-64 имеют только 48-битное виртуальное адресное пространство?

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

86
Что означает «rep; нет; " имеется ввиду в сборке x86? Это то же самое, что и инструкция «пауза»?

Что rep; nopзначит? Это то же самое, что и pauseинструкция? Это то же самое, что rep nop(без точки с запятой)? Чем отличается простая nopинструкция? По-разному ли ведет себя на процессорах AMD и Intel? (бонус) Где официальная документация к этим инструкциям? Мотивация на этот вопрос После...

11
Пример кода IBM, не входящие функции не работают в моей системе

Я изучал повторный вход в программирование. На этом сайте IBM (действительно хороший). Я основал код, скопированный ниже. Это первый код, который катится по сайту. Код пытается показать проблемы, связанные с общим доступом к переменной при нелинейной разработке текстовой программы (асинхронность),...

10
Действительно ли L2 HW prefetcher действительно полезен?

Я нахожусь на Whiskey Lake i7-8565U и анализирую счетчики перфектов и время для копирования 512 КБ данных (в два раза больше, чем размер кэша L2), и столкнулся с некоторым недоразумением относительно работы устройства предварительной выборки L2 HW. В Руководстве Intel Vol.4 MSR есть MSR, 0x1A4бит 0...