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

20
Как проверить, требует ли двоичный файл SSE4 или AVX в Linux

В Linux /proc/cpuinfoпозволяет просто проверить все флаги процессора, которые есть у машины. Обычно, если программе требуется расширенный набор инструкций машины, самый простой способ определить это - запустить ее и посмотреть, вызывает ли она SIGILLсигнал. Но в моем случае все мои процессоры...

16
Что на самом деле происходит, когда я запускаю «cli; hlt »в моей системе Linux?

Поэтому я недавно выяснил, что есть HLTкод операции для остановки процессора. Круто, посмотрим что получится! user@box:~$ cat > test.c int main(void) { __asm__("HLT"); return 0; } user@box:~$ gcc -o test test.c user@box:~$ ./test Segmentation fault (core dumped) user@box:~$ Duh! Как скучно....

14
Задержка инструкций процессора на процессорах x86 и x64

Я ищу какую-то таблицу или что-то подобное, что может помочь мне рассчитать эффективность кода сборки. Как я знаю, сдвиг бит занимает 1 такт процессора, но я действительно смотрю, сколько нужно сложения (вычитание должно быть одинаковым), умножения и как предположительно рассчитать время деления,...

11
Почему мы не можем понять содержимое двоичного файла после компиляции?

Насколько я знаю, каждая программа состоит из набора инструкций процессора с некоторыми конкретными переменными данных (float, int, char ...) для работы с регистрами процессора . Итак, первое, что я подумал об этом (давно), это то, что если вы знаете, что значение ASCII %¨#$¨#(просто случайный...

8
Насколько распространены старые процессоры x64 без инструкции cmpxchg16b?

Инструкция cmpxchg16b для выполнения атомарного 128-битного обмена памятью не поддерживается на старых версиях процессора x64, но кажется, что это поддерживается новыми версиями процессора уже несколько лет. Насколько вероятно, что я столкнусь с 64-битной машиной со старым процессором, в котором...

2
Vim форматирование сборки

Vim неправильно делает отступ для ассемблерного кода, независимо от того, хочу ли я, чтобы он делал это автоматически, или если я пытаюсь gg=G это просто говорит ## строки с отступом хотя это ничего не изменило, и весь мой текст по-прежнему выровнен по левому краю....

0
Как компьютер добавляет 2 номера на самом низком уровне?

Большинство адресов памяти содержат только 8 бит (1 байт). Это означает, что он может содержать число до 255. Что, если я хотел сохранить 511? Я хотел бы использовать 2 адреса памяти и хранить его так 00000001 11111111 Но если у моей программы был такой код операции, как ADD. Как он интерпретирует...