A Proof-Oriented Approach to Low-Level, High-Assurance Programming