As long as the programming language has the ability to manipulate binary files, you could write a complete OS in the particular language. This is not to say that it is easy, or practical. It just makes sense that, if your chosen language can manipulate binary, then you can go as low-level as you need.