С++ и ассемблер

Тема в разделе "WASM.ZEN", создана пользователем wasm_test, 26 дек 2009.

Статус темы:
Закрыта.
  1. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.615
    Адрес:
    Russia
    TermoSINteZ
    кстати не плохое клише из метро при закрытии треда
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Rockphorr
    Код (Text):
    1. ;
    2. ;   System service's private version of KiExceptionExit
    3. ;   (Also used by KiDebugService)
    4. ;
    5. ;   Check for pending APC interrupts, if found, dispatch to them
    6. ;   (saving eax in frame first).
    7. ;
    8.         public  _KiServiceExit
    9. _KiServiceExit:
    10.  
    11.         cli                                         ; disable interrupts
    12.         DISPATCH_USER_APC   ebp, ReturnCurrentEax
    13.  
    14. ;
    15. ; Exit from SystemService
    16. ;
    17.  
    18.         EXIT_ALL    NoRestoreSegs, NoRestoreVolatile
    19.  
    20. ;
    21. ; The address of the argument list is not a user address. If the previous mode
    22. ; is user, then return an access violation as the status of the system service.
    23. ; Otherwise, copy the argument list and execute the system service.
    24. ;
    25.  
    26. kss80:  test    byte ptr [ebp].TsSegCs, MODE_MASK ; test previous mode
    27.         jz      KiSystemServiceCopyArguments ; if z, previous mode kernel
    28.         mov     eax, STATUS_ACCESS_VIOLATION ; set service status
    29.         jmp     kss60                   ;
    30.  
    31. ;++
    32. ;
    33. ;   _KiServiceExit2 - same as _KiServiceExit BUT the full trap_frame
    34. ;       context is restored
    35. ;
    36. ;--
    37.         public  _KiServiceExit2
    38. _KiServiceExit2:
    39.  
    40.         cli                             ; disable interrupts
    41.         DISPATCH_USER_APC   ebp
    42.  
    43. ;
    44. ; Exit from SystemService
    45. ;
    46.  
    47.         EXIT_ALL                            ; RestoreAll
    48.  
    49. if DBG
    50.  
    51. kss100: push    PCR[PcIrql]                 ; put bogus value on stack for dbg
    52.  
    53. ?FpoValue = ?FpoValue + 1
    54.  
    55. FPOFRAME ?FpoValue, 0
    56.         mov     byte ptr PCR[PcIrql],0      ; avoid recursive trap
    57.         cli                                 ;
    58.  
    59. ;
    60. ; IRQL_GT_ZERO_AT_SYSTEM_SERVICE - attempted return to usermode at elevated
    61. ; IRQL.
    62. ;
    63. ; KeBugCheck2(IRQL_GT_ZERO_AT_SYSTEM_SERVICE,
    64. ;             System Call Handler (address of system routine),
    65. ;             Irql,
    66. ;             0,
    67. ;             0,
    68. ;         TrapFrame);
    69. ;
    70.  
    71.         stdCall _KeBugCheck2,<IRQL_GT_ZERO_AT_SYSTEM_SERVICE,ebx,eax,0,0,ebp>
    72.  
    73. ;
    74. ; APC_INDEX_MISMATCH - attempted return to user mode with kernel APCs disabled
    75. ; or a process attached.
    76. ;
    77. ; KeBugCheck2(APC_INDEX_MISMATCH,
    78. ;             System Call Handler (address of system routine),
    79. ;             Thread->ApcStateIndex,
    80. ;             Thread->CombinedApcDisable,
    81. ;             0,
    82. ;         TrapFrame);
    83. ;
    84.  
    85. kss120: movzx   eax,byte ptr [ecx]+ThApcStateIndex ; get APC state index
    86.         mov     edx,[ecx]+ThCombinedApcDisable ; get kernel APC disable
    87.     stdCall _KeBugCheck2,<APC_INDEX_MISMATCH,ebx,eax,edx,0,ebp>
    88.  
    89. endif
    90.         ret
    91.  
    92. _KiFastCallEntry  endp
    Что про это думаете ?
    У вас не системный образ мышления, впрочем как и изложения - слишком много воды. Соответственно вы и выбрали себе среду. Какие задачи решаете ?
     
  3. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Знать и пользоваться только одним языком, это глупость и псевдоэлитарность. Вот клерк пишет, - "компиляторные макросы это зло". Это не макросы, а стандартные высокоуровневые конструкции, призванные отделить задачу от конкретного железа. Но клерк элито, ему достаточно x86 и XP. Он конечно крутой спец, но в узкоспециализированной области. Такой путь - выбор далеко не всех.
     
  4. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.615
    Адрес:
    Russia
    думаю что вы серьезно обросли макросами решая свои задачи

    пишу командер - если конкретно добился динамической загрузки образов участков кода, реализовал настройку перемещаемых адресов - тут я вам лучше макрос покажу, щас думаю учинить выбор из таблицы адреса сегмента участка по имени
     
  5. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    Black_mirror
    Ты же вроде сильно сомневаешься, что читабельность сильно зависит от того, какие в языке буквы используются.
    С чего бы тогда асм не наш язык, а си наш?
     
  6. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Rockphorr
    С моей точки зрения определение функции и пр. в домже си есть макрос, который раскрое компилятор. Так вод мы не обросли, а используем это по минимуму. Именно макросами различается среда, они и определяют её гибкость. Командер это не особо продвинутый софт, более того это уг. Само сабой понятно что про регистры к примеру вам ничего знать не нужно.
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    *томже
     
  8. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Clerk
    >Командер это не особо продвинутый софт, более того это уг.
    Понятно, кто не с нам тот уг.
     
  9. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.615
    Адрес:
    Russia
    Clerk
    макрос асма позволяет себя проконтролировать до байтика а в си таких вкусностей нет - больше асм макросов шире контроль за качеством кода
    командер не продвинутый софт это точно но мне и интересны виджеты на асме
     
  10. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.615
    Адрес:
    Russia
    что такое уг ??? гуано ???
     
  11. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    унылое
     
  12. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.615
    Адрес:
    Russia
    каждому своё
     
  13. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.615
    Адрес:
    Russia
    Clerk
    совершенно не очевидно
     
  14. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.615
    Адрес:
    Russia
    я покидаю данную дискуссию, что хотел услышал
     
  15. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    letopisec
    В 10 раз разницу ты получишь только если в сишной программе по 10 операций в одну строчку будешь записывать. Множество инструкций процессора весьма сильно пересекается с множеством операций языка си. На некоторых других архитектурах операнды приходится загружать и сохранять отдельными командами, но это максимум в 3 раза больше операций, причём в случае сильно неоптимизированной программы, но никак не в 10, а на x86 большинство команд могут работать с операндом из памяти, поэтому я считаю что максимум придётся писать в 2 раза больше кода.
     
  16. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Тут все ясно, я не представляю какой коэффициент фанатизма у "героев" ассемблера, что они несут такую чушь и не видят аргументов. Привет прогресс, долой бин совместимость, и мое время дороже процессорного, пусть лучше парни из интел работают. Кстати про "оптимизацию" легко доказать что машинная в идеале (да и не только в идеале) лучше ручной, а когда кода много так это вообще очевидно.

    PS тему думаю лучше прикрыть ,уже была и не раз. А уважаемы Clerk пусть покажет "крутой" софт на ассемблере, не считая мелких ( но тем не менее крутых ) финтеклюшек, а то кругом одно уг.
     
  17. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Black_mirror
    в 2... да хоть бы на 10% и то хорошо, особенно учитывая тот факт что потеря времени как раз может быть и в 10 раз больше
     
  18. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Clerk
    В чём профит? Есть задача написать к примеру драйвер. В чём профит писать:
    mov eax, offset b
    mov offset a, eax
    Вместо: a = b;?
    Или первый макрос проще запомнить?
     
  19. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    Black_mirror
    Лады. Два раза это мало? Для сравнительно небольшой проги в 10000 строк кода, это по-моему существенно. Или ты так не считаешь?

    SPA
    и мое.
     
  20. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Rockphorr
    Очевидно. Признайте что вы не в теме и плохо осведомлены. Переход к между языками происходит при необходимости. Если вам не достаточно гибкости одного вы возьмёте другой. Если задача тривиальна и не требует вобще никакой гибкости тогда и язык значения не имеет. Кто начинал коденг с си и судить про это не может. Я начинал с асма/железа, асмом и закончил. Если мне нужно собрать гуй я возьму пб, вб или иную другую среду. А си он хорошо подходит для решения низкоуровневых задач, вот только это от выбора зависит. Он не альтернатива асму, даже там где он не нужен.
     
Статус темы:
Закрыта.