This paper presents a mechanised Hoare-style programming logic framework for assembly level programs. The framework has been
designed to fit on top of operational semantics of realistically modelled machine code. Many ad hoc restrictions and features present in real machine-code are handled, including finite memory, data and code in the same memory
space, the behavior of status registers and hazards of corrupting special purpose registers (e.g. the program counter, procedure
return register and stack pointer). Despite accurately modeling such low level details, the approach yields concise specifications
for machine-code programs without using common simplifying assumptions (like an unbounded state space). The framework is based
on a flexible state representation in which functional and resource usage specifications are written in a style inspired by
separation logic. The presented work has been formalised in higher-order logic, mechanised in the HOL4 system and is currently
being used to verify ARM machine-code implementations of arithmetic and cryptographic operations.