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

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

4
Чому додавання вбудованих коментарів до збірки спричиняє такі радикальні зміни у коді, що генерується GCC?
Отже, у мене був такий код: constexpr unsigned N = 1000; void f1(char* sum, char* a, char* b) { for(int i = 0; i < N; ++i) { sum[i] = a[i] + b[i]; } } void f2(char* sum, char* a, char* b) { char* end = sum + N; while(sum …

1
Go не пов’язує мою збірку: undefined external function
Я намагаюся написати деякі SIMD в основному для навчальних цілей. Я знаю, що Go може пов’язати збірку, але я не можу змусити її працювати належним чином. Ось найменший приклад, який я можу зробити (векторне множення по елементах): vec_amd64.s (примітка: фактичний файл має пробіл під рядком, RETоскільки в іншому випадку він …
82 assembly  go 

3
Чому панель GCC працює з NOP?
Я працюю з C короткий час, і зовсім недавно почав потрапляти в ASM. Коли я складаю програму: int main(void) { int a = 0; a += 1; return 0; } Розбирання objdump має код, але nops після ret: ... 08048394 <main>: 8048394: 55 push %ebp 8048395: 89 e5 mov %esp,%ebp …
81 c  gcc  assembly 

7
Що таке .S-файли?
Я бачив .Sфайли в різних проектах, таких як ядро ​​Linux, ядро ​​FreeBSD або деякі інші проекти. Що роблять ці файли і чому .cзамість цього ми не можемо мати файли?
79 assembly 

3
Що таке мікрокод Intel?
З того, що я прочитав, він використовується для виправлення помилок в центральному процесорі без зміни BIOS. З моїх базових знань про складання я знаю, що інструкції з монтажу розділяються на мікрокоди центральним процесором і виконуються відповідно. Але Intel якось надає доступ до деяких оновлень, поки система працює і працює. Хтось …
78 linux  assembly  intel 

5
Чому умовний переїзд не є вразливим щодо відмови прогнозування філій?
Прочитавши цю публікацію (відповідь на StackOverflow) (у розділі оптимізації), мені було цікаво, чому умовні переміщення не є вразливими до відмови передбачення гілок. Я знайшов статтю про умовні переїзди тут (PDF від AMD) . Також там вони заявляють про перевагу в експлуатації умовно. рухається. Але чому це? Я цього не бачу. …

2
Що таке SP (стек) та LR в ARM?
Я читаю визначення знову і знову, і все ще не розумію, що таке SP та LR в ARM? Я розумію ПК (на ньому вказана адреса наступної інструкції), SP та LR, ймовірно, схожі, але я просто не розумію, що це таке. Не могли б ви допомогти мені? редагувати: якби ви могли …
77 assembly  stack  arm 

5
Чому ця програма на C ++ така неймовірно швидка?
Я написав невеликий орієнтир для порівняння продуктивності різних інтерпретаторів / компіляторів для Python, Ruby, JavaScript та C ++. Як очікується, виявляється, що (оптимізований) C ++ перевершує мови сценаріїв, але фактор, за допомогою якого він робить це, неймовірно високий. Результати: sven@jet:~/tmp/js$ time node bla.js # * JavaScript with node * 0 …

2
Що тут означає @plt?
0x00000000004004b6 <main+30>: callq 0x400398 <printf@plt> Хтось знає? ОНОВЛЕННЯ Чому двоє disas printfдають мені різний результат? (gdb) disas printf Dump of assembler code for function printf@plt: 0x0000000000400398 <printf@plt+0>: jmpq *0x2004c2(%rip) # 0x600860 <_GLOBAL_OFFSET_TABLE_+24> 0x000000000040039e <printf@plt+6>: pushq $0x0 0x00000000004003a3 <printf@plt+11>: jmpq 0x400388 (gdb) disas printf Dump of assembler code for function printf: …


4
Як розпочати писати драйвери пристроїв? [зачинено]
Закрито . Це питання ґрунтується на думках . Наразі відповіді не приймаються. Хочете покращити це питання? Оновіть питання, щоб на нього можна було відповісти фактами та цитатами, відредагувавши цю публікацію . Закрито 2 роки тому . Удосконалюйте це питання Я хотів би навчитися писати драйвери пристроїв, бо, думаю, це було …
75 c  assembly  hardware  drivers 

1
Чи потрібні інструкції x86, щоб їхнє власне кодування, а також всі їх аргументи були присутніми в пам'яті одночасно?
Я намагаюся розібратися, чи можна запустити VM Linux, оперативну пам’ять якої підтримує лише одна фізична сторінка. Щоб імітувати це, я змінив обробку помилок вкладеної сторінки в KVM, щоб видалити даний біт з усіх записів вкладених таблиць сторінок (NPT), за винятком того, що відповідає поточній несправності сторінки. Намагаючись запустити гостьова Linux, …

1
Чому ініціалізація масиву GCC у масиві спочатку заповнює всю нуль, включаючи ненульові елементи?
Чому 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 materialize a[] in memory instead of optimizing …

1
Чому GCC не може припустити, що розмір std :: vector :: не зміниться в цьому циклі?
Я заявляв колезі, який 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>& input) { int i = 0; for (size_t i …
14 c++  gcc  assembly 

1
Точна копія машинного коду працює на 50% повільніше, ніж оригінальна функція
Я трохи експериментував із виконанням оперативної пам’яті та флеш-пам’яті у вбудованих системах. Для швидкого прототипування та тестування в даний час я використовую Arduino Due (SAM3X8E ARM Cortex-M3). Наскільки я можу бачити, час виконання та завантажувач Arduino тут не мають значення. Ось питання: у мене є функція ( calc ), яка …

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