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

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

Вычесть переменную из регистра? ошибка A2022: операнды инструкции должны быть одного размера

.data num1 word 0FEEDh .code main PROC mov ecx, 0E4C7FFFDh ;ecx = 0E4C7FFFD hex sub ecx, num1 ;;;;; error on this line Я хочу иметь возможность вычитать переменную num1 из регистра ecx, но эта попытка дает: ошибка A2022: операнды...
avatar
Dalex
9 августа 2021 в 00:01
147
2

Не удается получить доступ к 32-битной версии в защищенном режиме

Во время разработки небольшого ядра я столкнулся со странной проблемой при загрузке процессоров приложений с использованием APIC. Как указано в OSDev и Intel-Manual, процессор сначала переходит в реальный режим, и моя цель — заставить его работать в защищенном режиме....
avatar
Sep Roland
8 августа 2021 в 21:30
82
1

Как зациклиться на сегменте кода размером 64 КБ в программе, которая пришивает себя к собственному хвосту, до бесконечности?

Если последовательное выполнение инструкций проходит через смещение 65535, то 8086 выберет следующий байт инструкции со смещения 0 в том же сегменте кода. Следующая программа .COM использует этот факт и постоянно сшивает весь свой код (всего 32 байта) в свой хвост,...
avatar
J.Todd
7 августа 2021 в 23:55
67
1

Драйверы UEFI DXE работают в реальном режиме? Как насчет кода "кольцо -2" или "кольцо -3"?

Я задал вопрос, касающийся режима, который иногда называют кольцом -2 (Режим управления системой), который можно использовать для создания руткитов. Существует даже кандидат в руткиты, именуемый кольцом -3 (Intel Management Engine). Кроме того, есть эта презентация, в...
avatar
user16567153
7 августа 2021 в 19:46
90
1

Преобразование строки цифр в целое число с помощью подпрограммы

Программа на языке ассемблера для чтения положительного целого числа (трех и более цифр) в виде строки и преобразования строки в фактическое значение целого числа. В частности, создайте подпрограмму для чтения числа. Рассматривайте это как строку, хотя она будет...
avatar
petitecanaille
7 августа 2021 в 11:28
44
0

Какой символ и переменная на самом деле представляют, когда я использую их в nasm? [дубликат]

Что означает строка: "d: db 'hey',0xa". Я знаю, что d — это символ, но что он означает, когда я использую его так: «mov eax, d»? Вводить значение или адрес в eax? Что означает этот символ, когда я его использую? Во-вторых, для записи вывода мы должны заполнить регистр...
avatar
retrofusion
7 августа 2021 в 07:11
48
0

Стек значений с плавающей запятой на HLA

Я пытаюсь создать функцию, которая возвращает символьное значение на основе значения с плавающей запятой, например: |Процент | Письмо Оценка | | 90,0–100,0 А | | 80,0 - 89,9 Б | | 70,0 - 79,9 С | | 60,0 - 69,9 Д | | Ниже 59,9 F | Вот что у меня есть: program...
avatar
MikeS
6 августа 2021 в 05:30
74
0

Загрузчик - LBA28 в длинном режиме не работает

После входа в длинный режим из загрузчика копирование второго сектора в память с использованием LBA28 приводит к сбою ПК. Второй сектор успешно скопирован в памяти в 32-битном режиме. Сбой происходит при выполнении инструкции rep insw Есть ли отдельная инструкция...
avatar
Mode77
5 августа 2021 в 14:30
75
1

Правильно ли я понимаю эту сборку?

Исходный код написан на C, и я скомпилировал его с помощью gcc 11.1 с отключенной оптимизацией (-O0). Ссылка на сборку здесь, так что вы можете увидеть ее сами. Я аннотировал сборку тем, что, по моему мнению, происходит, и "??" для строк, в которых я не слишком...
avatar
ASM student
4 августа 2021 в 20:27
54
1

Движение Segfault (%eax), %ebx на второй итерации этого цикла?

Я новичок в ассемблере и пытаюсь вывести по одному символу строки за раз, и в настоящее время у меня это получается. .equ STDOUT,1 .equ WRITE,4 .equ EXIT,1 char_string: .asciz "hello, world" .text .globl _start _start: movl...
avatar
Peter
4 августа 2021 в 13:38
58
2

Как заставить llvm использовать инструкцию «ИЛИ» для ускорения

У меня есть код C, который в основном сводится к следующему: *p_Bool3 = *p_Bool1 || *p_Bool2; где p_Bool1, p_Bool2 и p_Bool3 равны "bool *". clang++ дает мне эту сборку для X86 с использованием O2 (O3 не имеет значения, я просто использую O2, потому что это то,...
avatar
MARSHMALLOW
4 августа 2021 в 01:17
68
1

Ядро C сходит с ума от чисел с плавающей запятой [закрыто]

Итак, я пишу ядро ​​C (которое работает в защищенном режиме) и балуюсь числами с плавающей запятой. Во-первых, я написал эту программу на C, чтобы убедиться, что ничего не пойдет не так (работает на моей физической машине, а не как часть ядра), которая использовала...
avatar
Mattmmmmm
3 августа 2021 в 17:02
284
2

Сборка x86. Как указатель стека отслеживает правильное расположение локальных переменных после того, как адрес возврата помещается в стек?

Сейчас я читаю CSAPP и наткнулся на эту цифру, но я кое-что не могу понять В строке 1 указатель стека уменьшается на 16, и два 8-байтовых числа сохраняются в стеке 0 и 8 байт относительно указателя стека отдельно, но в строке 7 адрес возврата swap_add помещается в...
avatar
TimeOrange
3 августа 2021 в 08:24
202
0

Есть ли лучшая реализация для целочисленного «mul and add» с avx? [дубликат]

Я только что узнал, как оптимизировать GEMM с помощью векторных регистров x86, и нам дали матрицы, элементы которых равны 32-bit int, и для упрощения просто пренебрегли переполнением. Существует _mm256_fmadd_pd для двойных чисел с плавающей запятой для обновления...
avatar
moonasteroid
3 августа 2021 в 03:52
86
1

Заставить objdump использовать суффикс размера операнда, такой как l, для каждой мнемоники, даже если она не двусмысленна?

Сегодня я узнал об использовании objdump в Linux для поиска дизассемблированного кода программ с синтаксисом At&t. При использовании objdump дизассемблированный код выглядел нормально, но в нем не было окончания «l» после мнемоники (должно быть «movl», а не «mov»)....
avatar
Csaas33
1 августа 2021 в 17:29
79
1

Режимы адресации и источник памяти по сравнению с местом назначения в сборке x86 MASM

Я просмотрел множество тем, касающихся этой темы, и все они запутались. Я не видел наглядного изображения ни для одного из ответов, которые могли бы мне помочь. Я не понимаю разницы между всеми этими утверждениями: mov eax, ebx mov [eax],ebx mov eax, [ebx] Если...
avatar
uch
1 августа 2021 в 09:31
73
1

Неожиданные результаты от деления в зависимости от того, использую ли я EAX, AX или AL

Ну, у меня есть ограниченная (ввод только однозначных слагаемых) программа суммирования, которая выводит результат суммирования с помощью хранения остатков в стеке и их печати после этого. 1 global _start 2 section .data 3 NEW_LINE db 10 4...
avatar
goldenbanana42
31 июля 2021 в 10:28
85
1

Рекомендации по чтению с USB-накопителя в реальном режиме

Я пишу свой собственный загрузчик для процессора x86, и моя цель - прочитать второй сектор (после загрузчика), который будет содержать ядро. В конце концов система загрузится с USB-накопителя. Я использую qemu для тестирования, так что в идеале он должен работать и...
avatar
Csaas33
31 июля 2021 в 00:10
52
1

Проверяем, равен ли результат 0 без CMP? Сборка x86 MASM [дубликат]

У меня есть следующий код: or edx,edx (0 Or 0 would equal 0) jz InvalidDivisor Если я изменю код на этот: AND edx,edx (0 and 0 would equal 0) jz InvalidDivisor Разве оба способа не будут работать для проверки того, что произведение равно 0?
avatar
thunder
30 июля 2021 в 17:57
56
1

OUT размером слова в байтовый регистр ввода-вывода? Установка регистра контроллера последовательности без инструкций в старом коде VGA

У меня возникли проблемы с пониманием того, как регистры контроллера последовательности устанавливаются в этом примере с некоторым старым кодом VGA: mov dx,SC_INDEX mov ax,0604h out dx,ax ;disable chain4 mode Пример взят из книги Майкла Абраша по VGA:...