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

x86 - это архитектура, производная от процессора Intel 8086. Семейство x86 включает 32-битные архитектуры IA-32 и 64-битные x86-64, а также унаследованные 16-битные архитектуры. Вопросы о последнем должны быть помечены тегами [x86-16] и / или [emu8086]. Используйте тег [x86-64], если ваш вопрос относится к 64-битной x86-64. Для FPU x86 используйте тег [x87]. Для SSE1 / 2/3/4 / AVX * также используйте [sse] и любой из [avx] / [avx2] / [avx512], который применяется

5
Для чего предназначен регистр «FS» / «GS»?
Итак, я знаю, какими должны быть следующие регистры и их использование: CS = сегмент кода (используется для IP) DS = сегмент данных (используется для MOV) ES = целевой сегмент (используется для MOVS и т. Д.) SS = сегмент стека (используется для SP) Но для чего предназначены следующие регистры? FS = …

3
Кольца привилегий ЦП: почему кольца 1 и 2 не используются?
Пара вопросов относительно колец привилегий процессора x86: Почему кольца 1 и 2 не используются в большинстве операционных систем? Это просто для поддержания совместимости кода с другими архитектурами или есть лучшая причина? Существуют ли какие-либо операционные системы, которые действительно используют эти кольца? Или они совсем не используются?
102 x86  cpu  privileges 

5
Какова функция инструкций push / pop, используемых для регистров в сборке x86?
Читая об ассемблере, я часто сталкиваюсь с людьми, которые пишут, что они нажимают определенный регистр процессора и вставляют его позже, чтобы восстановить его предыдущее состояние. Как вы можете протолкнуть регистр? Куда это подталкивают? Зачем это нужно? Сводится ли это к инструкции одного процессора или это более сложно?

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

5
Каково назначение регистра указателя кадра EBP?
Я новичок в ассемблере и заметил, что код x86, выдаваемый компиляторами, обычно сохраняет указатель кадра даже в режиме выпуска / оптимизации, когда он может использовать EBPрегистр для чего-то еще. Я понимаю, почему указатель кадра может упростить отладку кода и может быть необходим, если он alloca()вызывается внутри функции. Однако в x86 …


2
Как работает подкачка x86?
Этот вопрос призван заполнить вакуум хорошей бесплатной информации по предмету. Я считаю, что хороший ответ уместится в один большой SO-ответ или, по крайней мере, в несколько ответов. Основная цель - дать новичкам достаточно информации, чтобы они могли взять руководство самостоятельно и понять основные концепции ОС, связанные с разбиением на страницы. …

6
Как разобрать необработанный 16-битный машинный код x86?
Я хотел бы разобрать MBR (первые 512 байт) загрузочного диска x86, который у меня есть. Я скопировал MBR в файл, используя dd if=/dev/my-device of=mbr bs=512 count=1 Есть ли предложения по утилите Linux, которая может дизассемблировать файл mbr?
91 linux  assembly  x86  x86-16  mbr 

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



7
Ограничения синтаксиса сборки Intel по сравнению с AT&T [закрыто]
В настоящее время этот вопрос не подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, потребует дебатов, аргументов, опросов или расширенного обсуждения. Если вы считаете, что этот вопрос можно улучшить и, возможно, снова открыть, обратитесь за помощью …
88 linux  assembly  x86  att  bsd 

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

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

3
Двойное приведение к беззнаковому int в Win32 обрезается до 2147483648
Компиляция следующего кода: double getDouble() { double value = 2147483649.0; return value; } int main() { printf("INT_MAX: %u\n", INT_MAX); printf("UINT_MAX: %u\n", UINT_MAX); printf("Double value: %f\n", getDouble()); printf("Direct cast value: %u\n", (unsigned int) getDouble()); double d = getDouble(); printf("Indirect cast value: %u\n", (unsigned int) d); return 0; } Выходы (MSVC x86): …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.