x86-64

Я знаю, что вы можете выровнять переменные по строке кэша, например, с помощью атрибут ((align(64))) в ССАГПЗ. Однако я заинтересован в выравнивании (или вы можете назвать это заполнением) во время объявления структуры. Так, например, для следующей структуры я хочу попросить компилятор создать необходимое ...

pushq %rbp movq %rsp, %rbp subq $32, %rsp У меня есть большой вопрос относительно объяснения "$32" в третьей инструкции. Информация из поиска и блогов указывает, что в приведенной выше третьей инструкции мы резервируем определенные "байты" пространства для стека. Из doc %rsp - 64-разрядный регистр, ...

Недавно я понял, что это можно сделать в 64-битном коде: const size_t kLowStackSize = 1024UL * 1024UL * 4UL; void *low_stack = mmap(NULL, kLowStackSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_32BIT, -1, 0); struct __attribute__((packed, aligned(16))) { int32_t address; ...

Справочная информация: при оптимизации некоторых Паскаль код со встроенным языком ассемблера, я заметил ненужный MOV инструкции, и удалил его. к моему удивлению, удаление ненужной инструкции привело к тому, что моя программа тормозить. я нашел это добавление произвольных, бесполезно MOV инструкции повышенн...

следующие ссылки объясняют соглашения о системных вызовах x86-32 для UNIX (BSD flavor) и Linux: http://www.int80h.org/bsdasm/#system-calls http://www.freebsd.org/doc/en/books/developers-handbook/x86-system-calls.html но каковы соглашения о системных вызовах x86-64 как для UNIX, так и для Linux?...

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

на x86-64 тур по руководствам Intel, Я читал Пожалуй, самым удивительным фактом является то, что инструкция типа MOV EAX, EBX автоматически обнуляет верхние 32 бита RAX зарегистрироваться. документация Intel (3.4.1.1 регистры общего назначения в 64-битном режиме в ручной базовой архитектуре), цитируемая...

используя GCC 6.3, следующий код C++: #include <cmath> #include <iostream> void norm(double r, double i) { double n = std::sqrt(r * r + i * i); std::cout << "norm = " << n; } создает следующую сборку x86-64: norm(double, double): mulsd %xmm1, %xmm1 subq ...

этот вопрос уже есть ответ здесь: почему инструкции x86-64 на 32-разрядных регистрах обнуляют верхнюю часть полного 64-разрядного регистра? 2 ответы как это широко рекламируется, современные процессоры x86_64 имеют 64...

Как вы можете перечислить все функции в программе с GDB?...