Встроенный asm в gcc

Тема в разделе "WASM.ASSEMBLER", создана пользователем vadimec, 11 окт 2008.

  1. vadimec

    vadimec New Member

    Публикаций:
    0
    Регистрация:
    6 окт 2008
    Сообщения:
    7
    ПОМОГИТЕ разобраться в встроенном асме в гсиси.
    Код (Text):
    1. inportb (unsigned short _port)
    2. {
    3.   unsigned char rv;
    4.   __asm__ __volatile__ ("inb %1, %0"
    5.       : "=a" (rv)
    6.       : "dN" (_port));
    7.   return rv;
    8. }
    Кто это пишет? ?)
    Что такое "=а"
    Что такое "dN"
    ?????
    взято из djgpp
     
  2. driver

    driver New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    302
    х.з. чего интеллигенты напридумывали...
     
  3. dag

    dag New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2004
    Сообщения:
    446
    Код (Text):
    1. .text:0804848C ; Attributes: bp-based frame
    2. .text:0804848C
    3. .text:0804848C                 public inportb
    4. .text:0804848C inportb         proc near  
    5. .text:0804848C
    6. .text:0804848C var_3           = byte ptr -3
    7. .text:0804848C var_2           = word ptr -2
    8. .text:0804848C arg_0           = dword ptr  8
    9. .text:0804848C
    10. .text:0804848C                 push    ebp
    11. .text:0804848D                 mov     ebp, esp
    12. .text:0804848F                 sub     esp, 4
    13. .text:08048492                 mov     eax, [ebp+arg_0]
    14. .text:08048495                 mov     [ebp+var_2], ax
    15. .text:08048499                 mov     dx, [ebp+var_2]
    16. .text:0804849D                 in      al, dx
    17. .text:0804849E                 mov     [ebp+var_3], al
    18. .text:080484A1                 movzx   eax, [ebp+var_3]
    19. .text:080484A5                 leave
    20. .text:080484A6                 retn
    21. .text:080484A6 inportb         endp
    P.S.
    Для уменьшения количества постов : http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html