Как я могу умножать и делить, используя только битовый сдвиг и сложение?
Как я могу умножать и делить, используя только битовый сдвиг и сложение?
Что rep; nopзначит? Это то же самое, что и pauseинструкция? Это то же самое, что rep nop(без точки с запятой)? Чем отличается простая nopинструкция? По-разному ли ведет себя на процессорах AMD и Intel? (бонус) Где официальная документация к этим инструкциям? Мотивация на этот вопрос После...
Я смотрю выступление Чендлера Каррута в CppCon 2019: Нет абстракций с нулевой стоимостью в нем он приводит пример того, как он был удивлен тем, сколько накладных расходов вы понесли, используя std::unique_ptr<int>овер int*; этот сегмент начинается примерно в момент времени 17:25. Вы можете...
В настоящее время я пытаюсь понять, как работает стек, поэтому я решил научиться некоторому языку ассемблера , я использую эту книгу: http://savannah.nongnu.org/projects/pgubook/ Я использую Gas и занимаюсь разработкой на Linux Mint . Меня что-то немного смущает: Насколько мне известно, стек - это...
Закрыто . Этот вопрос должен быть более конкретным . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он фокусировался только на одной проблеме, отредактировав этот пост . Закрыт 3 года назад . Уточните этот вопрос На днях я спорил с другом по поводу...
Я бы хотел начать использовать Blazor, несмотря на то, что он все еще находится на альфа-уровне. Насколько я понимаю, Blazor использует WebAssembly для компиляции C # на стороне клиента. И у меня есть такие вопросы: Работает ли этот подход быстрее, чем, например, React / Vue, скомпилированный на...
Этот вопрос продолжает мой вопрос здесь (по совету Mystical): Производительность цикла кода C Продолжая свой вопрос, когда я использую упакованные инструкции вместо скалярных инструкций, код, использующий встроенные функции, будет выглядеть очень похоже: for(int i=0; i<size; i+=16) { y1 =...
Я просматриваю MSIL и замечаю, что в MSIL есть много инструкций nop . В статье MSDN говорится, что они не предпринимают никаких действий и используются для заполнения пространства, если код операции исправлен. Они гораздо чаще используются в отладочных сборках, чем в сборках выпуска. Я знаю, что...
Я пытаюсь написать немного SIMD в основном для учебных целей. Я знаю, что Go может связывать сборку, но я не могу заставить его работать правильно. Вот самый простой пример, который я могу сделать (поэлементное умножение векторов): vec_amd64.s (примечание: под фактическим файлом стоит пробел,...
Я работал с C некоторое время и совсем недавно начал разбираться в ASM. Когда я компилирую программу: int main(void) { int a = 0; a += 1; return 0; } В дизассемблере objdump есть код, но после ret нет: ... 08048394 <main>: 8048394: 55 push %ebp 8048395: 89 e5 mov %esp,%ebp 8048397: 83 ec 10...
Я пытаюсь выяснить, возможно ли запустить виртуальную машину Linux, чья память поддерживается только одной физической страницей. Чтобы смоделировать это, я изменил обработчик ошибок вложенной страницы в KVM, чтобы удалить текущий бит из всех записей вложенной таблицы страниц (NPT), кроме той,...
Почему gcc заполняет весь массив нулями вместо оставшихся 96 целых чисел? Все ненулевые инициализаторы находятся в начале массива. void *sink; void bar() { int a[100]{1,2,3,4}; sink = a; // a escapes the function asm("":::"memory"); // and compiler memory barrier // forces the compiler to...
Я обновил свои версии 2019 16.3.10 до 16.4 и .net core 3.0 до .net core 3.1, но шаблон приложения веб-сборки Blazor
Я обратился к коллеге, который if (i < input.size() - 1) print(0);будет оптимизирован в этом цикле, чтобы input.size()он не читался на каждой итерации, но оказалось, что это не так! void print(int x) { std::cout << x << std::endl; } void print_list(const std::vector<int>&...
Я немного экспериментировал с выполнением из ОЗУ и флэш-памяти во встроенных системах. Для быстрого прототипирования и тестирования я в настоящее время использую Arduino Due (SAM3X8E ARM Cortex-M3). Насколько я вижу, среда выполнения и загрузчик Arduino здесь не должны иметь никакого значения. Вот...
Недавно я начал использовать WebAssembly для некоторых своих проектов. Я делаю это, потому что я слышал, что Wasm быстрее, чем javaScript. Когда я фактически начал свой первый проект Wasm, я понял, что не знаю, как манипулировать DOM в C ++. Есть ли способ сделать это с помощью...
Что в действительности происходит на современном оборудовании ПК, загруженном в устаревшем 16-разрядном режиме BIOS MBR, когда вы сохраняете байт, например '1'(0x31), в кадровый буфер VGA text (mode 03) по физическому линейному адресу B8000? Насколько медленно работает mov [es:di], eaxмагазин с...
Рассмотрим этот код C: void foo(void); long bar(long x) { foo(); return x; } Когда я компилирую его в GCC 9.3 с помощью -O3или -Os, я получаю это: bar: push r12 mov r12, rdi call foo mov rax, r12 pop r12 ret Выходные данные из clang идентичны, за исключением того, что они выбраны rbxвместо...
Я нахожусь на Whiskey Lake i7-8565U и анализирую счетчики перфектов и время для копирования 512 КБ данных (в два раза больше, чем размер кэша L2), и столкнулся с некоторым недоразумением относительно работы устройства предварительной выборки L2 HW. В Руководстве Intel Vol.4 MSR есть MSR, 0x1A4бит 0...
На странице википедии о файлах .COM https://en.wikipedia.org/wiki/COM_file она гласит: Файлы .COM в DOS устанавливают все регистры сегмента x86 на одно и то же значение, а регистр SP (указатель стека) - на 0xFFFE, поэтому стек начинается с самой верхней части сегмента памяти и оттуда работает вниз....