Software code of a software system (e.g., a software stack) may be verified as conforming to a specification. A high-level language implementation of the software system may be compiled using a compiler to create an assembly language implementation. A high-level specification corresponding to the software system may be translated to a low-level specification. A verifier may verify that the assembly language implementation functionally conforms to properties described in the low-level specification. In this way, the software system (e.g., a complete software system that includes an operating system, device driver(s), a software library, and one or more applications) may be verified at a low level (e.g., assembly language level).
소프트웨어 시스템(예를 들어, 소프트웨어 스택)의 소프트웨어 코드는 사양을 준수하는 것으로 검증될 수 있다. 소프트웨어 시스템의 하이 레벨 언어 구현은 컴파일러를 사용하여 컴파일링되어 어셈블리 언어 구현을 생성할 수 있다. 소프트웨어 시스템에 대응하는 하이 레벨 사양은 로우 레벨 사양으로 변환될 수 있다. 검증기는 어셈블리 언어 구현이 로우 레벨 사양에 설명된 속성을 기능적으로 준수하는지를 검증할 수 있다. 이 방식으로, 소프트웨어 시스템(예를 들어, 운영 시스템, 디바이스 드라이버, 소프트웨어 라이브러리, 및 하나 이상의 애플리케이션을 포함하는 완전한 소프트웨어 시스템)은 로우 레벨(예를 들어, 어셈블리 언어 레벨)에서 검증될 수 있다.