Есть ли дружба С++ с Ассемблером по Стандарту?
    , [[hohma_unused]]
  ![]()  | 
Наши проекты:
 Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту  | 
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS | 
| [216.73.216.5] | 
 
 | 
		
  | 
    Есть ли дружба С++ с Ассемблером по Стандарту?
    , [[hohma_unused]]
  | 
         
         
         
          
           Сообщ.
           #1
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Всем привет! 
        
      Простой вопрос. Есть хотелки в следующих ипостасях: 1) Реализация и оформление статического метода на gas (в синтаксисе Intel) 2) Реализация и оформление метода на gas (в синтаксисе Intel) 3) Реализация и оформление виртуального метода на gas (в синтаксисе Intel) 4) Реализация и оформление статического метода на fasm и объявление, и внешняя линковка 5) Реализация и оформление метода на fasm и объявление, и внешняя линковка 6) Реализация и оформление виртуального метода на fasm и объявление, и внешняя линковка Вот такое хочется! Я понимаю, если это зависит от реализации ... Тогда интересуют реализации: 1) GCC/Clang/MinGW 2) Компилер от 2017-2019 студии 3) Компилер от Intel C++ Возможно кто-то вспомнит про встроенный асм студии - его право. Я его никогда не видел (может его вааще нет)   Если есть инфа - продолжим о способах передачи параметров и получении значения(й) по возврату.  | 
    
| 
         
         
         
          
           Сообщ.
           #2
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Подобные вещи описываются в ABI соответствующего компилятора и отчасти ОСи. По Стандарту лишь ключевое слово asm(строковый литерал);, но всё, что более глубоко, является implementation specified. А вот ABI как раз и должно описывать всё то, что тебя интересует: передача параметров, структура стековых фреймов, рабочие регистры итп.   
        
       | 
    
| 
         
         
         
          
           Сообщ.
           #3
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Qraizer, умаляю!!! Дай наколку на доки в виде ссылки - хотя бы на п.4-5-6   
        
        для любого компилера  (GCC/Clang в фаворе) Добавлено ЗЫ: Оси, которые интересны Win/FreeBSD/Linux/OsX (в порядке интереса), архитектура строго Intel/AMD64. Для ARM'мов я не дорос есчо, PowerPC-перерос не застав.  | 
    
| 
         
         
         
          
           Сообщ.
           #4
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          JoeUser 
        
      Вопрос понятный. Ответ такой же всё это зависит от компилятора и у каждого свои заморочки. А ещё это плохо документировано. Самое простое решение собрать код с трансляцией кода Си в Асм. И посмотреть как компилятор оформляет код. Цитата  Если есть инфа - продолжим о способах передачи параметров и получении значения(й) по возврату. https://www.agner.org/optimize/calling_conventions.pdf Обязательно прочитайте главу про Name mangling Добавлено Вот тут не плохая подборка спецификаций ABI https://en.wikipedia.org/wiki/Executable_an...#Specifications  | 
    
| 
         
         
         
          
           Сообщ.
           #5
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Pavia, пасип!   
        
       |