"Уреда"не може да генерира код. Кода го генерира програмиста и го записва във флаш паметта на контролера, която се прочита при стартирането му в сетапа. Записи по време на работата му могат да стават в постоянна памет на различни променливи - числа, не се генерира никакъв код.
Реално погледнато, всеки един компилатор генерира процесорен код от език на по-високо ниво. И почти всички компилатори не превеждат нещата дословно, а имат редица оптимизации в процеса на компилацията. Могат да игнорират някой ред от програмата, който не се изпълнява, могат да извадят някои оператори извън даден for или while цикъл, ако резултата от изчисленията не се влияе от цикъла и т.н. Така че има програми, които генерират год.
Също така в самите процесори на компютрите (не говорим за тия на ардуино, расбери и СТМ) се извършва разлагане на кода на процесорни инструкции, разбираеми за конкретния модел процесор, при което отново се извършва оптимизация и дори промяна на реда на изпълнение на инструкциите, ако логиката го позволява. 
Занимава се само с контролери на фирмата ST Electronics.
Тя е лидер и притежава най-голяма гама микроконтролери предимно за промишлеността. Има огромно хардуерно разнообразие. Има собствена развойна среда - безплатна.
Говориш го това щото не си се разравял из нещата на Сименс. 
Всеки производител на промишлени контролери има своя развойна среда. Някои са безплатни, други - платени. Данфос примерно все още поддържа едни MCX контролери, макар че те вече поостаряха. Раазвойната им среда е чисто графична (както и при Сименс), и генерира процесорен код от картинка - буквално ей от това:

или това:

прави код с инструкции за процесора.
Може ли някой от вас да покаже на практика нещо свързано с предмета на спора?
Лаладжии колкото щеш.
Тия дни точно се занимавам да комуникирам с един газанализатор Тесто, за който няма почти никаква документация. Моря изкуствения да съчинява едни парчета код, които после да събера в нещо работещо. Единственото което засега ми е от полза, че че спестява камара писане, в което аз вероятно бих допуснал немалко грешки и ще ми отнеме време да ги търся. Но пък недостатъка е че това не е мой код, и губя време да разбера какво прави, и как да го "пипна" за да върши точно това, което ми е нужно. 
Доста често изкуствения забива в някаква задънена улица и ми е много трудно да го изкарам оттам. Праща ме да звъня на поддържката на Тесто, да им искам SDK за комуникация, или да ми обяснява как се сдвояват bluetooth устройства под windows и как да си потърся драйвери, или да си преинсталирам windows-а ако не мога да ги сдвоя... 
Но примерно като му дадох една програма от 3 000 реда в която имаше някои неща които ми вършеха работа и камара функционалност която е неприложима за моето устройство и го помолих да остави само тази функционалност която ми трябва - от 3 000 реда направи 300. Имаше неща които скапваха комуникацията, не успя да се оправи и трябваше аз ръчно да го насочвам какви промени да направи - примерно да спре сканирането за нови устройства докато чете данните, да се избави максимално от всякакви многонишкови методи, с които евтиния блутут донгъл де ползвам се шашка...
Дадох му JSON изхода от уреда и той ми генерира доста смилен клас, в който тоя изход да може да се събере, като даже се усети че уреда връща имена на полета чието име съвпада с оператори на C# и сложи в класа методи които да решат тази колизия...