AUTOSAR C++14 Rule A7-4-1

asm объявление не должно использоваться.

Описание

Управляйте определением

asm объявление не должно использоваться.

Объяснение

asm объявление является методом, чтобы включать инструкции по блоку непосредственно в рамках исходного кода C++. Поддержка и реализация asm объявление противоречиво через среды. asm объявление взаимодействует по-другому с исходным кодом C++ в различных средах. Чтобы постараться не ограничивать мобильность вашего кода, не используйте asm объявление и не включает инструкции по блоку в ваш исходный код C++.

Реализация Polyspace

Polyspace® отмечает использование asm объявление где угодно в исходном коде C++.

Поиск и устранение проблем

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Примеры

развернуть все

        #include <cstdint>
        using namespace std;
        const char* p = "hello world";
        
        void Fn1(void)
        {
            asm("movq p, %rdi\n"
                "call puts");    // Noncompliant           
        }
        
        #define _debug() asm volatile("debug":::"memory")     
                                    // Noncompliant
        void Fn2(void)                 
        {
            _debug();                 
        }

        main()
        {
	         // 
        }

Polyspace отмечает использование asm объявление в Fn(1) потому что инструкции по блоку после объявления специфичны для среды. Например, если вы используете gcc компилятор в среде x64 Linux®, Fn1() производит строку hello world когда названо. В других средах, выходе вызова Fn1() непредсказуемо. Polyspace также отмечает использование asm объявление в создании _debug() макрос.

Проверяйте информацию

Группа: объявление

Введенный в R2020a