assembly- все статьи тега ➜ страница 2
Как именно работает callstack?
я пытаюсь получить более глубокое понимание того, как работают низкоуровневые операции языков программирования и особенно как они взаимодействуют с ОС/процессором. Я, вероятно, прочитал каждый ответ в каждом потоке, связанном со стеком/кучей, здесь на Stack Overflow, и все они блестящие. Но есть еще одна вещь, которую я еще не до конца понял. рассмотрим эту функцию в псевдокоде, который имеет тенденцию быть действительным кодом ржавчины; -) fn foo() { let a = 1; let b = 2; let c = ...
В чем разница между 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 ...
Что быстрее: if(bool) или if (int)?
какое значение лучше использовать? Логическое значение true или целое число 1? выше тема заставила меня сделать некоторые эксперименты с bool и int на if состояние. Поэтому просто из любопытства я написал эту программу: int f(int i) { if ( i ) return 99; //if(int) else return -99; } int g(bool b) { if ( b ) return 99; //if(bool) else return -99; } int main(){} g++ intbool.cpp -S генерирует ассемблерный код для каждой функции следующим образом: ASM код для f(int) ...
Как разобрать исходный код x86?
Я хотел бы разобрать MBR (первые 512 байт) загрузочного диска x86, который у меня есть. Я скопировал MBR в файл с помощью dd if=/dev/my-device of=mbr bs=512 count=1 любые предложения для утилиты Linux, которая может разобрать файл mbr? ...
Какова цель кода операции nop?
Я иду через MSIL и замечаю, что есть много nop инструкция. В статье MSDN говорится, что они не предпринимают никаких действий и используются для заполнения пространства, если код операции исправлен. Они используются в отладочных построениях, чем версии. Я знаю, что такие операторы используются в языках ассемблера, чтобы убедиться, что код операции соответствует границе слова, но зачем он нужен в MSIL? ...
Что означает" rep; nop; " в сборке x86? Это то же самое, что и инструкция" пауза"?
что значит rep; nop в смысле? это то же самое как pause инструкция? это то же самое как rep nop (без запятой)? в чем разница с простым nop инструкция? он ведет себя по-разному на процессорах AMD и Intel? (бонус) где находится официальная документация по этим инструкциям? мотивация для этого вопрос после некоторого обсуждения в комментариях другого вопроса я понял, что не знаю, что rep; nop; означает в x86 (или x86-64) сборке. А также я не мог найти хорошее объяснение в интернете. я знаю, чт ...
Что такое Intel microcode?
из того, что я читал, он используется для исправления ошибок в процессоре без изменения BIOS. Из моих базовых знаний о сборке я знаю, что инструкции по сборке разделяются на микрокоды внутри процессора и выполняются соответственно. Но intel каким-то образом дает доступ к некоторым обновлениям во время работы системы. У кого-нибудь есть больше информации о них? Есть ли какая-либо документация относительно того, что можно сделать с микрокодами и как они могут быть использовали? изменить: Я про ...
Как увидеть JIT-скомпилированный код в JVM?
есть ли способ увидеть собственный код, создаваемый JIT в JVM? ...
Разница между JE / JNE и JZ/JNZ
в ассемблерном коде x86, are JE и JNE точно так же, как JZ и JNZ? ...
Почему конструкция std:: optional дороже, чем std:: pair?
рассмотрим эти два подхода, которые могут представлять собой " необязательный int": using std_optional_int = std::optional<int>; using my_optional_int = std::pair<int, bool>; учитывая эти две функции... auto get_std_optional_int() -> std_optional_int { return {42}; } auto get_my_optional() -> my_optional_int { return {42, true}; } ...оба G++ и багажник и clang++ trunk(С -std=c++17 -Ofast -fno-exceptions -fno-rtti) произведите следующую сборку: get_std_optional ...
Что означает @plt здесь?
0x00000000004004b6 <main+30>: callq 0x400398 <printf@plt> кто-нибудь знает? обновление почему два disas printf дайте мне другой результат? (gdb) disas printf Dump of assembler code for function printf@plt: 0x0000000000400398 <printf@plt+0>: jmpq *0x2004c2(%rip) # 0x600860 <_GLOBAL_OFFSET_TABLE_+24> 0x000000000040039e <printf@plt+6>: pushq x0 0x00000000004003a3 <printf@plt+11>: jmpq 0x400388 (gdb) disas printf Dump of assembler code for f ...
Примеры Предварительной Выборки?
кто может дать пример или ссылку на пример, который использует __builtin_prefetch в GCC (или просто инструкции ASM prefetcht0 в целом), чтобы получить существенное преимущество в производительности? В частности, я хотел бы, чтобы пример соответствовал следующим критериям: это простой, небольшой, самодостаточный пример. удаление __builtin_prefetch инструкция приводит к снижению производительности. замена __builtin_prefetch поручение с соответствующей памятью доступ приводит к снижению производи ...
Самый быстрый способ вычисления 128-битного целого числа по модулю 64-битного целого числа
у меня есть 128-битное целое число без знака A и 64-битное целое число без знака B. каков самый быстрый способ вычисления A % B - Это (64-разрядный) остаток от деления A на B? Я хочу сделать это на языке C или ассемблере, но мне нужно ориентироваться на 32-разрядную платформу x86. Это, к сожалению, означает, что я не могу воспользоваться поддержкой компилятора для 128-битных целых чисел, а также способностью архитектуры x64 выполнять необходимую операцию в одном инструкция. Edit: Спасибо за о ...
Компиляция / запуск ассемблера в Linux?
Я довольно новичок в Linux (Ubuntu 10.04) и полный новичок в ассемблере. Я следил за некоторыми учебниками, и я не мог найти ничего конкретного для Linux. Итак, мой вопрос, Что такое хороший пакет для компиляции/запуска ассемблера и какие команды для компиляции/запуска этого пакета? ...