Вбудований асемблер (C), Microsoft Docs

В цій статті

Блок, що стосується лише систем MicrosoftMicrosoft Specific

Вбудований асемблер дозволяє впроваджувати інструкції мови асемблера безпосередньо у вихідні програми без додаткових кроків зі складання та компонування. The inline assembler lets you embed assembly-language instructions directly in your C source programs without extra assembly and link steps. Вбудований код на асемблері вбудований в компілятор, тому вам не потрібен окремий збирач мови асемблера, такий як Microsoft Macro Assembler (MASM). The inline assembler is built into the compiler — Ви не повинні використовувати окремий assembler such as Microsoft Macro Assembler (MASM).

Так як вбудований асемблер не вимагає окремих дій зі складання та компонування, він є більш зручним, ніж окремий асемблер. Тому, що в inline assembler немає потреби в окремій assembly and link steps, it is more convenient than a separate assembler. У вбудованому коді на мові асемблера можна використовувати будь-яке ім'я змінної або функції мови C, що знаходиться в області видимості, тому легко інтегрувати з кодом C програми. Inline assembly code може бути використаний будь-який C variable або функція name, що є в рядку, так що це легко включити його з вашим програмою C code. Оскільки в коді на мові асемблера можна одночасно використовувати оператори C, за його допомогою можна виконувати завдання, які надто складно або неможливо виконати тільки в C. And because in C alone.

Ключове слово __asm ​​викликає вбудований асемблер і може використовуватися в будь-якому місці, де може використовуватися оператор С. The__asm ​​keyword invokes inline assembler і може appear wherever a C statement is legal. Він не може відображатись самостійно. Це неможна побачити його. За ним повинна слідувати інструкція зі збирання, група інструкцій, укладена в круглі дужки або, у крайньому випадку, порожня пара круглих дужок. Він повинен бути спричинений assembly instruction, групою інструкцій, які входять у брюки, або на дуже тяжкі, empty pair of braces. Термін "блок __asm" у цьому розділі стосується будь-якої інструкції або групи інструкцій, у дужках або без них. Термін " __asm ​​block " тут refers to any instruction або group of instructions, wherethere or not in braces.

Наступний код – це простий блок __asm, укладений у фігурні дужки. Code below is a simple __asm ​​block enclosed in braces. (Цей код є послідовністю прологу функції користувача.) (The code is a custom function prolog sequence.)

Крім того, можна поставити __asm ​​перед кожною інструкцією зі збирання. Крім того, ви можете почати __asm ​​в front of each assembly instruction:

Оскільки ключове слово __asm ​​є роздільником операторів, можна поміщати інструкції асемблера на одному рядку. Since __asm ​​keyword is a statement separator, you can also put assembly instructions on the same line:

Завершення блоку, який стосується лише систем МайкрософтEND Microsoft Specific