Descreveu um pouco hard-RT vs soft-RT, mas faltou dar nome; esse ultimo vc ta falando de portabilidade de linguagem? Nao quer dizer capacidade? Portabilidade eh uma caracteristica de codigo, nao de linguagem. Em relacao aos requisitos, o unico real eh a quantidade de memoria e o tipo de RT que vc precisa, nada mais. Todos SoC's rodam algum tipo de ASM, e especialmente os de 32bits pra cima, todos tem algum ASM fazendo o bootstrap inicial da CPU, da stack e da libc. Tecnicamente, se vc codar o seu runtime em ASM, vc nao precisa de C, C++, Rust, Zig, etc, so de memoria msm. E vc esqueceu de falar do quao contencioso eh floating point em embedded. Mtos uC's nao tem unidades de execução para tal, entao o compilador tem que gerar codigo que executa essas operacoes emulando essas unidades. No caso do GCC, ele usa a libgcc.