Во время работы над недавним проектом меня посетил представитель QA клиента, который задал мне вопрос, который я раньше не рассматривал:
Как вы знаете, что используемый вами компилятор генерирует машинный код, который точно соответствует функциональности кода c и что компилятор полностью детерминирован?
На этот вопрос у меня не было абсолютно никакого ответа, поскольку я всегда принимал компилятор как должное. Он принимает код и извергает машинный код. Как я могу проверить и проверить, что компилятор на самом деле не добавляет функциональность, о которой я не просил? или даже более опасно реализовать код несколько иначе, чем тот, который я ожидаю?
Я знаю, что это перпапс, на самом деле не проблема для всех, и действительно ответ может быть просто... "ты за баррель и справляешься с ним". Однако при работе во встроенной среде вы доверяете своему компилятору неявно. Как я могу доказать себе и QA, что я прав в этом?