Запитання з тегом «assembly»

Питання програмування мови (асм). ОБОВ'ЯЗКОВО ТАКОЖ ТАКОЖ ТАГО з набором процесора та / або інструкцій, який ви використовуєте, а також з асемблером. ПОПЕРЕДЖЕННЯ. Для збірок .NET використовуйте замість тегу [.net-Assembly]. Для Java ASM використовуйте замість тегу [java-bytecode-asm].

12
Чому GCC не оптимізує a * a * a * a * a * a to (a * a * a) * (a * a * a)?
Я роблю деяку числову оптимізацію на науковому застосуванні. Одне, що я помітив, - це те, що GCC оптимізує виклик pow(a,2), компілюючи його a*a, але виклик pow(a,6)не оптимізований і фактично викликає функцію бібліотеки pow, що значно уповільнює продуктивність. (На відміну від цього, компілятор Intel C ++ , який виконується icc, усуне …

14
Чи <швидше, ніж <=?
Є чи if( a &lt; 901 )швидше if( a &lt;= 900 ). Не зовсім так, як у цьому простому прикладі, але незначні зміни продуктивності у циклі складного коду. Я припускаю, що це має щось робити з генерованим машинним кодом, якщо це навіть правда.

10
Заміна 32-розрядного лічильника циклу на 64-бітний вводить шалені відхилення продуктивності на _mm_popcnt_u64 на процесорах Intel
Я шукав найшвидший шлях до popcountвеликих масивів даних. У мене виник дуже дивний ефект: зміна змінної циклу з unsignedна uint64_tзменшення продуктивності на моєму ПК. Орієнтир #include &lt;iostream&gt; #include &lt;chrono&gt; #include &lt;x86intrin.h&gt; int main(int argc, char* argv[]) { using namespace std; if (argc != 2) { cerr &lt;&lt; "usage: array_size in …

11
Код C ++ для тестування гіпотези Collatz швидше, ніж рукописна збірка - чому?
Я написав ці два рішення для проекту Euler Q14 , в зборі та в C ++. Це той же самий ідентичний підхід для випробування гіпотези Колатца . Рішення для складання було зібрано з nasm -felf64 p14.asm &amp;&amp; gcc p14.o -o p14 С ++ було складено з g++ p14.cpp -o p14 …


4
Як домогтися теоретичного максимуму 4 FLOP за цикл?
Як можна досягти теоретичної пікової продуктивності 4 операцій з плаваючою комою (подвійна точність) за цикл на сучасному процесорі Intel x86-64 Intel? Наскільки я розумію, для більшості сучасних процесорів Intel потрібні три цикли для SSE add і п'ять циклів mul(див., Наприклад , «Таблиці інструкцій» Agner Fog ). Завдяки конвеєрному каналу можна …

30
Коли збірка швидша за C?
Однією з заявлених причин того, щоб знати асемблера, є те, що іноді його можна використовувати для написання коду, який буде більш ефективним, ніж написання цього коду мовою вищого рівня, зокрема С. Тим НЕ менше, я також чув , що сказав багато разів , що , хоча це не зовсім брехня, …
475 c  performance  assembly 


4
Чому, як виявляється, перемикання Java на суміжні вставки працює швидше із доданими справами?
Я працюю над деяким кодом Java, який потрібно оптимізувати, оскільки він буде працювати в гарячих функціях, які викликаються в багатьох точках моєї основної логіки програми. Частина цього коду включає множення doubleзмінних на 10підняті до довільних негативних int exponents. Одним із швидких способів (відредагувати: але не найшвидше, див. Оновлення 2 нижче) …

10
Використання GCC для виготовлення читабельної збірки?
Мені було цікаво, як використовувати GCC у своєму вихідному файлі C, щоб скинути мнемонічну версію машинного коду, щоб я міг бачити, до чого збирається мій код. Це можна зробити за допомогою Java, але мені не вдалося знайти спосіб за допомогою GCC. Я намагаюся переписати метод С на зборах і бачу, …
256 c  gcc  assembly 

3
Що таке реполінія і як вона працює?
Для пом'якшення ядра або розкриття пам’яті між процесами ( атака Spectre ) ядро 1 Linux буде складено з новою опцією , -mindirect-branch=thunk-externвведеною gccдля здійснення непрямих викликів через так звану реполінію . Це, здається, щойно придуманий термін, оскільки пошук у Google виявляється лише зовсім недавнього використання (як правило, у 2018 році). …

10
Як виглядає багатомовна збірна мова?
Колись, наприклад, щоб написати асемблер x86, ви мали б інструкції, що вказують "завантажувати регістр EDX зі значенням 5", "збільшувати регістр EDX" тощо. З сучасними процесорами, які мають 4 ядра (або навіть більше), на рівні машинного коду це виглядає просто так, що є 4 окремі процесори (тобто є лише 4 чіткі …
243 assembly  x86  cpu  multicore  smp 

12
Чи "перемикання" швидше, ніж "якщо"?
Чи switchтвердження насправді швидше, ніж ifтвердження? Я запустив код нижче на компіляторі x64 C ++ Visual Studio 2010 з /Oxпрапором: #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;time.h&gt; #define MAX_COUNT (1 &lt;&lt; 29) size_t counter = 0; size_t testSwitch() { clock_t start = clock(); size_t i; for (i = 0; i &lt; …

3
Як запустити програму без операційної системи?
Як ви запускаєте програму самостійно без операційної системи? Чи можете ви створити програми складання, які комп'ютер може завантажувати та запускати при запуску, наприклад, завантажувати комп'ютер з флешки, і він запускає програму, що знаходиться на процесорі?

16
Чи можливо "декомпілювати" Windows .exe? Або хоча б переглянути Асамблею?
Мій друг завантажив з Facebook щось зловмисне програмне забезпечення, і мені цікаво подивитися, що це робить, не заразивши себе. Я знаю, що ви не можете дійсно декомпілювати an .exe, але чи можу я принаймні переглянути його у зборах чи приєднати налагоджувач? Відредагуйте, щоб сказати, що це не виконавчий файл .NET, …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.