Se não quiser usar C, você pode usar Rust tambem, vai te dar muito mais segurança pra construir o kernel sem ter bugs de memoria, e com o sistema de unsafe, da pra fazer literalmente tudo, até colocar assembly dentro do rust, e o rust tambem compila pra várias arquiteturas, claro, vc vai ter várias versoes do mesmo codigo pra arquiteturas diferentes porque não é tudo igual. Rust é uma boa alternativa ao C pra fazer kernels e bootloaders.
Pra configurar um projeto Rust pra baremetal não é muito complicado, recomendo o site https://os.phil-opp.com/ para mais detalhes sobre isso. Atenção, NÃO USE ESSE SITE COMO RECEITA DE BOLO, use como uma fonte de informação, um guia de como começar um kernel em rust, introduzindo alguns conceitos de coisas que existe por baixo dos panos que os kernels interagem e implementam pra fazer as coisas funcionar, mas nao ensina como criar um sistema inteiro.