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

x86 - це архітектура, отримана з процесора Intel 8086. Сімейство x86 включає 32-розрядні архітектури IA-32 та 64-бітні x86-64, а також застарілі 16-бітні архітектури. Питання щодо останнього слід позначати [x86-16] та / або [emu8086]. Використовуйте тег [x86-64], якщо ваше запитання стосується 64-бітного x86-64. Для x86 FPU використовуйте тег [x87]. Для SSE1 / 2/3/4 / AVX * також використовуйте [sse], а також будь-які з [avx] / [avx2] / [avx512], які застосовуються

3
Привілейовані кільця процесора: Чому кільця 1 і 2 не використовуються?
Кілька питань щодо привілейованих процесорів x86 CPU: Чому кільця 1 і 2 не використовуються в більшості операційних систем? Це просто підтримка сумісності коду з іншими архітектурами, чи є краща причина? Чи є операційні системи, які фактично використовують ці кільця? Або вони повністю не використовуються?
102 x86  cpu  privileges 

5
Для чого призначений реєстр “FS” / “GS”?
Тому я знаю, якими мають бути наступні регістри та їх використання: CS = сегмент коду (використовується для IP) DS = сегмент даних (використовується для MOV) ES = Сегмент призначення (використовується для MOVS тощо) SS = сегмент стека (використовується для SP) Але для чого призначені наступні регістри? FS = "Сегмент файлу"? …

11
Розрахунки з плаваючою точкою та цілими числами на сучасному обладнання
Я роблю деяку критичну роботу на C ++, і зараз ми використовуємо цілі обчислення для проблем, які за своєю суттю є плаваючою точкою, оскільки "це швидше". Це викликає цілу масу роздратованих проблем і додає багато дратівливого коду. Тепер я пам'ятаю, як читав про те, як обчислення з плаваючою точкою були …

5
Яка функція push / pop інструкцій, що використовуються в регістрах у збірці x86?
Читаючи про асемблер, я часто стикаюся з людьми, які пишуть, що вони штовхають певний регістр процесора і вмикають його пізніше, щоб відновити попередній стан. Як можна натиснути реєстр? Куди його штовхають? Навіщо це потрібно? Це зводиться до однієї інструкції процесора чи вона більш складна?

5
Яка мета реєстру покажчика кадру EBP?
Я початківець у мові складання і помітив, що код x86, що випромінюється компіляторами, зазвичай утримує покажчик кадру навколо навіть у режимі випуску / оптимізації, коли він може використовувати EBPреєстр для чогось іншого. Я розумію, чому покажчик кадру може полегшити налагодження коду, і це може знадобитися, якщо alloca()викликається у межах функції. …


6
Як розібрати необроблений 16-розрядний машинний код x86?
Я хотів би розібрати MBR (перші 512 байт) завантажувального диска x86, який у мене є. Я скопіював MBR у файл за допомогою dd if=/dev/my-device of=mbr bs=512 count=1 Будь-які пропозиції щодо утиліти Linux, яка може розібрати файл mbr?
91 linux  assembly  x86  x86-16  mbr 

2
Як працює підкачка x86?
Це питання покликане заповнити вакуум доброї безкоштовної інформації з цього питання. Я вважаю, що хороша відповідь впишеться в одну велику ТАК відповідь або, принаймні, у кілька відповідей. Основна мета - надати початківцям початківцям достатньо інформації, щоб вони могли самостійно взяти посібник та зрозуміти основні концепції ОС, пов’язані з підкачкою. Рекомендовані …


6
Чому Intel приховує внутрішнє ядро ​​RISC у своїх процесорах?
Починаючи з Pentium Pro (мікроархітектура P6), Intel переробила свої мікропроцесори та використовувала внутрішнє ядро ​​RISC згідно зі старими інструкціями CISC. Оскільки Pentium Pro всі інструкції CISC поділяються на менші частини (uops), а потім виконуються ядром RISC. На початку мені було зрозуміло, що Intel вирішила приховати нову внутрішню архітектуру та змусити …


7
Обмеження синтаксису збірки Intel порівняно з AT&T [закрито]
В даний час це питання не підходить для нашого формату запитань та відповідей. Ми очікуємо, що відповіді будуть підтверджені фактами, посиланнями чи експертизою, але це питання, швидше за все, вимагатиме дебатів, аргументів, опитування чи розширеного обговорення. Якщо ви вважаєте, що це питання можна покращити і, можливо, знову відкрити, відвідайте довідковий …
88 linux  assembly  x86  att  bsd 

3
Використання gdb для одноетапного коду збірки поза вказаним виконуваним файлом викликає помилку "не вдається знайти межі поточної функції"
Я перебуваю поза цільовим виконуваним файлом gdb, і у мене навіть немає стека, який відповідає цій цілі. Я все одно хочу зробити крок, щоб я міг перевірити, що відбувається в моєму коді збірки, оскільки я не фахівець у збірці x86. На жаль, gdb відмовляється виконувати цю просту налагодження на рівні …

2
Що означає «реп; nop; " означає в збірці x86? Це те саме, що інструкція "пауза"?
Що це rep; nopозначає? Це те саме, що pauseінструкція? Це те саме, що rep nop(без крапки з комою)? Яка різниця від простої nopінструкції? Чи поводиться він по-різному на процесорах AMD та Intel? (бонус) Де знаходиться офіційна документація до цих інструкцій? Мотивація цього питання Після обговорення в коментарях до іншого питання …

3
Подвійна передача до беззнакового int на Win32 зменшується до 2 147 483 688
Компіляція такого коду: double getDouble() { double value = 2147483649.0; return value; } int main() { printf("INT_MAX: %u\n", INT_MAX); printf("UINT_MAX: %u\n", UINT_MAX); printf("Double value: %f\n", getDouble()); printf("Direct cast value: %u\n", (unsigned int) getDouble()); double d = getDouble(); printf("Indirect cast value: %u\n", (unsigned int) d); return 0; } Виходи (MSVC x86): …

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