x86- все статьи тега
Как установить align 64 в ml64.отлично?
Каков простейший способ задать align 64 для некоторого кода функции ассемблера с помощью ml64.exe? Выравнивание по умолчанию для _TEXT равно 16, поэтому ml64 не позволяет установить больше 16 в команде align. И ml64 не позволяет изменить выравнивание для _TEXT. Можно создать еще один раздел / сегмент, но можем ли мы получить 64 byte выравнивание в основном разделе _TEXT? Есть ли какое-нибудь решение? С. П. Решение, предложенное в ответе с _TEXT$FOO работает! _TEXT$FOO SEGMENT ALIGN(64) align ...
Дальний прыжок в ГДТ в загрузчика
flush_gdt: lgdt [gdtr] jmp 0x08:complete_flush complete_flush: mov ax, 0x10 mov ds, ax mov es, ax mov fs, ax mov gs, ax mov ss, ax ret Я не могу понять, что делает этот код . flush_gdt - это метка, затем lgdt [gdtr] загружает указатель 48-bit в регистр gdtr, а затем из jmp 0x08:complet_flush. Что делает инструкция jmp ? и тогда почему мы перемещаем 0x10 в ax, а затем в другие регистры ...
x86 Intel Assembler LEA
Глядя на следующий код: (ebp-0x8 - > int) (ebp-0x4 - > int*) => 0x80483f3 <main+6>: mov DWORD PTR [ebp-0x8],0x0 0x80483fa <main+13>: mov DWORD PTR [ebp-0x4],0x0 0x8048401 <main+20>: mov DWORD PTR [ebp-0x8],0xa 0x8048408 <main+27>: lea eax,[ebp-0x8] 0x804840b <main+30>: mov DWORD PTR [ebp-0x4],eax 0x804840e <main+33>: mov eax,0x0 0x8048413 <main+38>: leave 0x8048414 <main+39>: ret Действит ...
Чипсет Intel-Программирование GPIO
Из спецификации я знал следующую информацию: JGPIO1 PIN# :10 SoC GPIO # : 71 USE select: IO 0x532[7] ( 0 = native function, 1 = GPIO ) IO select: IO 0x536[7] (0 = output, 1 = input ) Level: IO 0x540[7] ( 0 = low, 1= high ) В этом случае я хочу запрограммировать GPIO pin # 10. Есть ли какой-нибудь пример или образец кода, на который я могу сослаться ? Я могу сделать это thorugh RW-все [1]. Однако это происходит в Windows. Я хочу сделать это в C и в среде linux. Пожалуйста, посоветуйте ...
Кросс-компиляция Linux для архитектуры ARM
Я заинтересован в кросс-компиляции ядра Linux для цели ARM на хосте x86. Есть ли какие-то хорошие практики, которые вы рекомендуете? Какой набор для кросс-компиляции, на ваш взгляд, является лучшим? Вы создали пользовательскую среду кросс-компиляции? Если да, то какие у вас есть советы? Это хорошая идея? ...
Сдвиг 4 целых чисел вправо на разные значения SIMD
SSE не предоставляет способа сдвига упакованных целых чисел на переменную величину (я могу использовать любые инструкции AVX и старше). Вы можете делать только однообразные смены. Результат, которого я пытаюсь достичь для каждого целого числа в векторе, таков. i[0] = i[0] & 0b111111; i[1] = (i[1]>>6) & 0b111111; i[2] = (i[2]>>12) & 0b111111; i[3] = (i[3]>>18) & 0b111111; По существу пытается изолировать другую группу из 6 битов в каждом целом числе. Так како ...
Какие части этого ассемблерного кода HelloWorld необходимы, если я пишу программу в ассемблере?
У меня есть такая короткая программа hello world: #include <stdio.h> static const char* msg = "Hello world"; int main(){ printf("%sn", msg); return 0; } Я скомпилировал его в следующий ассемблерный код с помощью gcc: .file "hello_world.c" .section .rodata .LC0: .string "Hello world" .data .align 4 .type msg, @object .size msg, 4 msg: .long .LC0 .text .globl main .type main, @function main: .LFB0: .cfi_startproc ...
Как определить, если a.NET сборка была построена для x86 или x64?
У меня есть произвольный список сборок .NET. Мне нужно программно проверить, была ли каждая DLL построена для x86 (в отличие от x64 или любого процессора). Это возможно? ...
Что такое ретполин и как он работает?
для того, чтобы смягчить против ядра или кросс-процесс раскрытия памяти (Spectre атаки), ядро Linux1 будет скомпилирован с новой опцией,-mindirect-branch=thunk-extern представил gcc для выполнения косвенных вызовов через так называемый retpoline. это, кажется, недавно изобретенный термин, как поиск Google оказывается только очень недавнее использование (как правило, все в 2018 году). что такое ретполин и как это происходит это предотвратит недавние атаки на раскрытие информации ядра? 1 это н ...
Как вы используете gcc для создания ассемблерного кода в синтаксисе Intel?
на gcc -S опция будет генерировать ассемблерный код в синтаксисе AT&T, есть ли способ генерировать файлы в синтаксисе Intel? Или есть способ конвертировать между ними? ...
Почему переполнение целого числа на x86 с GCC вызывает бесконечный цикл?
следующий код переходит в бесконечный цикл на GCC: #include <iostream> using namespace std; int main(){ int i = 0x10000000; int c = 0; do{ c++; i += i; cout << i << endl; }while (i > 0); cout << c << endl; return 0; } так вот: переполнение целого числа со знаком является технически неопределенным поведением. Но GCC на x86 реализует целочисленную арифметику, используя целочисленные инструкции x86, которые оберт ...
Что Каждый Программист Должен Знать О Памяти?
Мне интересно, сколько из Ульриха Дреппера Что Каждый Программист Должен Знать О Памяти!--2--> С 2007 года остается в силе. Также я не мог найти более новую версию, чем 1.0 или описки. ...
В чем разница между ловушкой и прерыванием?
в чем разница между ловушкой и прерыванием? Если терминология различна для разных систем, то что они означают на x86? ...
Заголовочные файлы для встроенных SIMD x86
какие заголовочные файлы обеспечивают встроенные функции для различных расширений набора инструкций x86 SIMD (MMX, SSE, AVX,...)? Кажется, невозможно найти такой список в интернете. Поправьте меня, если я ошибаюсь. ...
В чем разница между MOV и LEA?
Я хотел бы знать, в чем разница между этими инструкциями: MOV AX, [TABLE-ADDR] и LEA AX, [TABLE-ADDR] ...
Что означает 'dword ptr'?
может кто-нибудь объяснит, что это значит? (Синтаксис Intel, x86, Windows) and dword ptr [ebp-4], 0 ...
Что является лучшим способом, чтобы установить регистр в ноль в ассемблере для x86: операции XOR, MOV или и?
все следующие инструкции делают то же самое: set %eax к нулю. Какой путь является оптимальным (требующим наименьшего количества циклов машины)? xorl %eax, %eax mov , %eax andl , %eax ...
Как разобрать исходный код x86?
Я хотел бы разобрать MBR (первые 512 байт) загрузочного диска x86, который у меня есть. Я скопировал MBR в файл с помощью dd if=/dev/my-device of=mbr bs=512 count=1 любые предложения для утилиты Linux, которая может разобрать файл mbr? ...
Что означает" rep; nop; " в сборке x86? Это то же самое, что и инструкция" пауза"?
что значит rep; nop в смысле? это то же самое как pause инструкция? это то же самое как rep nop (без запятой)? в чем разница с простым nop инструкция? он ведет себя по-разному на процессорах AMD и Intel? (бонус) где находится официальная документация по этим инструкциям? мотивация для этого вопрос после некоторого обсуждения в комментариях другого вопроса я понял, что не знаю, что rep; nop; означает в x86 (или x86-64) сборке. А также я не мог найти хорошее объяснение в интернете. я знаю, чт ...
Где находится замок для std:: atomic?
если структура данных содержит несколько элементов, атомарная версия не может (всегда) быть без блокировки. Мне сказали, что это верно для больших типов, потому что процессор не может атомарно изменить данные без использования какой-то блокировки. например: #include <iostream> #include <atomic> struct foo { double a; double b; }; std::atomic<foo> var; int main() { std::cout << var.is_lock_free() << std::endl; std::cout << sizeof(foo) < ...