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

x86-64 - це 64-розрядне розширення архітектури Intel x86

10
Чому системи x86-64 мають лише 48-бітний віртуальний адресний простір?
У книзі я прочитав таке: 32-розрядні процесори мають 2 ^ 32 можливі адреси, тоді як поточні 64-розрядні процесори мають 48-розрядний адресний простір Я сподівався, що якщо це 64-розрядний процесор, адресний простір також повинен бути 2 ^ 64. Тож мені було цікаво, в чому причина цього обмеження?


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

4
Вирівнювання пам'яті: як використовувати alignof / alignas?
Зараз я працюю із спільною пам’яттю. Я не можу зрозуміти alignofі alignas. cppreference незрозумілий: alignofповертає "вирівнювання", але що таке "вирівнювання"? кількість байт для додавання для наступного вирівняного блоку? м'який розмір? Записи переповнення стека / блоги теж незрозумілі. Хтось може пояснити чітко alignofі alignas?

2
Приклад коду IBM, функції, які не вводяться, не працюють у моїй системі
Я вивчав повторне працевлаштування в програмуванні. На цьому сайті IBM (справді хороший). Я створив код, скопійований нижче. Це перший код, який з'являється на веб-сайті. Код намагається показати проблеми, що стосуються спільного доступу до змінної в нелінійній розробці текстової програми (асинхронність), друкуючи два значення, які постійно змінюються в "небезпечному контексті". #include …
11 c  gcc  signals  x86-64  data-race 

1
Чому компілятори наполягають на використанні тут збереженого регістру?
Розглянемо цей код 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замість …
10 c  gcc  assembly  clang  x86-64 

1
C11 Atomic Acquire / Release та x86_64 відсутність завантаження / зберігання узгодженості?
Я бореться з розділом 5.1.2.4 стандарту C11, зокрема з семантикою випуску / придбання. Зауважу, що https://preshing.com/20120913/acquire-and-release-semantics/ (серед інших) зазначено, що: ... Семантика випуску запобігає переупорядкуванню пам'яті запису-релізу з будь-якою операцією читання або запису, яка передує їй у порядку програми. Отже, для наступного: typedef struct test_struct { _Atomic(bool) ready ; int …

2
Чи справді корисний префетер L2 HW?
Я перебуваю на Whiskey Lake i7-8565U і аналізую лічильники перф і час для копіювання 512 Кб даних (вдвічі більше, ніж розмір кешу L2) і зіткнувся з деяким непорозумінням щодо роботи префедера L2 HW. У посібнику з Intel Vol.4 MSR є MSR, 0x1A4біт 0 є для керування префедером L2 HW (1 …
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.