Я пишу многопоточное приложение в c ++, где производительность имеет решающее значение. Мне нужно использовать много блокировок при копировании небольших структур между streamами, для этого я выбрал использование штифтов. Я провел некоторое исследование и тестирование скорости на этом, и я обнаружил, что большинство реализаций примерно одинаково быстрые: Microsoft CRITICAL_SECTION, с установленным значением SpinCount до 1000, […]
Я googled, и я вижу удивительное количество легкомысленных ответов, в основном смеющихся над тем, кто задал такой вопрос. Microchip предоставляет бесплатный исходный код (я не хочу публиковать его здесь, если это не-нет. В основном, google AN937, нажмите на первую ссылку, и есть ссылка на «исходный код» и его зашифрованный файл). Его в ASM, и когда […]
Каковы размеры tword , oword и yword , используемых в руководстве NASM / YASM ? И по соответствующей заметке, есть ли трюк или основная идея этих имен? Есть ли способ, которым большему размеру слов присваиваются логические имена? Я знаю, что, хотя размер слов может различаться между системами, word NASM равно 2 байтам, dword удваивает значение […]
Существует два известных способа установки целочисленного регистра на нулевое значение на x86. Или mov reg, 0 или xor reg, reg Существует мнение, что второй вариант лучше, поскольку значение 0 не сохраняется в коде и что сохраняет несколько байтов полученного машинного кода. Это, безусловно, хорошо – меньше кэша команд используется, и иногда это может привести к […]
У меня есть Bootstrapper, который просматривает все сборки в приложении ASP.NET MVC для поиска типов, реализующих интерфейс IBootstrapperTask , а затем регистрирует их с помощью IOC Contrainer. Идея состоит в том, что вы можете буквально разместить свои объекты IBootstrapperTasks в любом месте и организовать свои проекты, как вам угодно. Код для Bootstrapper: public class Bootstrapper […]
0x0000000000400448 : push %rbp 0x0000000000400449 : mov %rsp,%rbp 0x000000000040044c : mov $0x6,%eax 0x0000000000400451 : leaveq 0x0000000000400452 : retq Я пытался: breaki 0x0000000000400448 но кажется, что нет такой команды. У gdb есть такая функция?
Я совершенно новичок в программировании. Я понятия не имею, как скомпилировать и запустить простую программу C в Sublime Text 2. (В колледже меня попросили использовать Turbo C ++ 3.0, но я обнаружил, что IDE довольно древняя.) Я использую Windows 8 (x64). Вот ошибка, которую я получил, когда я нажал на сборку.
Как это делается? Какие шаги я должен предпринять, и какие подводные камни и ошибки есть?
Как показывает этот вопрос , с g ++ я могу сделать g++ -S -masm=intel test.cpp . Кроме того, с clang я могу сделать clang++ -S test.cpp , но -masm=intel не поддерживается clang ( warning argument unused during compilation: -masm=intel ). Как получить синтаксис Intel с clang?
Когда я создаю почерк, я обычно выбираю форму lea eax, [eax+4] По форме .. add eax, 4 Я слышал, что lea – это «0-часовая» инструкция (например, NOP), а «add» – нет. Однако, когда я смотрю на сборщик, выпущенный сборкой, я часто вижу последнюю форму, используемую вместо первой. Я достаточно умен, чтобы доверять компилятору, так может […]