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

89
Почему Intel скрывает внутреннее ядро ​​RISC в своих процессорах?

Начиная с Pentium Pro (микроархитектура P6), Intel переработала свои микропроцессоры и использовала внутреннее ядро ​​RISC в соответствии со старыми инструкциями CISC. Начиная с Pentium Pro, все инструкции CISC делятся на более мелкие части (uops), а затем выполняются ядром RISC. Вначале мне было...

88
Ограничения синтаксиса сборки Intel по сравнению с AT&T [закрыто]

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

86
Использование gdb для пошагового ассемблерного кода за пределами указанного исполняемого файла вызывает ошибку «не удается найти границы текущей функции»

У меня нет целевого исполняемого файла gdb, и у меня даже нет стека, соответствующего этой цели. В любом случае я хочу пошагово, чтобы я мог проверить, что происходит в моем коде сборки, потому что я не эксперт в сборке x86. К сожалению, GDB отказывается выполнять эту простую отладку на уровне...

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

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

64
Требуют ли инструкции x86 своей собственной кодировки, а также всех своих аргументов для одновременного присутствия в памяти?

Я пытаюсь выяснить, возможно ли запустить виртуальную машину Linux, чья память поддерживается только одной физической страницей. Чтобы смоделировать это, я изменил обработчик ошибок вложенной страницы в KVM, чтобы удалить текущий бит из всех записей вложенной таблицы страниц (NPT), кроме той,...

23
Более быстрый тест делимости, чем оператор%?

Я заметил любопытную вещь на моем компьютере. * Рукописный тест делимости значительно быстрее, чем %оператор. Рассмотрим минимальный пример: * AMD Ryzen Threadripper 2990WX, GCC 9.2.0 static int divisible_ui_p(unsigned int m, unsigned int a) { if (m <= a) { if (m == a) { return 1; } return 0; }...

21
Почему GCC агрегирует инициализацию массива в первую очередь с нулями, включая ненулевые элементы?

Почему gcc заполняет весь массив нулями вместо оставшихся 96 целых чисел? Все ненулевые инициализаторы находятся в начале массива. void *sink; void bar() { int a[100]{1,2,3,4}; sink = a; // a escapes the function asm("":::"memory"); // and compiler memory barrier // forces the compiler to...

10
Почему DOS устанавливает регистр SP в 0xFFFE после загрузки файла .COM?

На странице википедии о файлах .COM https://en.wikipedia.org/wiki/COM_file она гласит: Файлы .COM в DOS устанавливают все регистры сегмента x86 на одно и то же значение, а регистр SP (указатель стека) - на 0xFFFE, поэтому стек начинается с самой верхней части сегмента памяти и оттуда работает вниз....