[PDF] A Semantic Model of Types and Machine Instructions for Proof





Previous PDF Next PDF



Typed Machine Language and its Semantics

We present TML a new low level typed intermediate language for the proof-carrying code framework. The type system of TML is expressive enough to compile high 



A Semantic Model of Types and Machine Instructions for Proof

16 Jul 1999 safety of machine-language programs with a machine- checkable proof. Such proofs have previously defined type-checking rules as part of the ...



Machine Language

Both binary and assembly code are forms of machine language. This article will provide an overview of a typical assembly language as well as a description 



A semantic model of types and machine instructions for proof

Proof-carrying code is a framework for proving the safety of machine-language programs with a machine- checkable proof. Previous PCC frameworks have de-.



The universal code of science and machine languages

According to the various types of utilization of linguistic informa- tion in machines various machine languages are being developed.



A Semantic Model of Types and Machine Instructions for Proof

Proof-carrying code is a framework for proving the safety of machine-language programs with a machine- checkable proof. Previous PCC frameworks have de-.



Safety Checking of Machine Code

machine-language programs and applied the safety checker to several examples. of not just the types of the operation's operands



Today (10/6/2008) Assembly vs. machine language R-type format

Machine language the binary representation for instructions. Register-to-register arithmetic instructions use the R-type format.



8086(Machine Language Instruction Formats)

•A machine language instruction format has one or more number of fields associated with it. type of operation to be performed by the CPU.



Machine (Assembly) Language

Typical machine language commands (3 types). ? ALU operations. ? Memory access operations. (addressing mode: how to specify operands).

A Semantic Model of Types and Machine Instructions for

Proof-Carrying Code

Andrew W. Appel

Bell Laboratories

?and Princeton UniversityAmy P. Felty

Bell Laboratories

Abstract

Proof-carrying code is a framework for proving the safety of machine-language programs with a machine- checkable proof. Previous PCC frameworks have de- fined type-checking rules as part of the logic. We show a universal type framework for proof-carrying code that will allow a code producerto choose a programminglan- guage, prove the type rules for that language as lemmas in higher-order logic, then use those lemmas to prove the safety of a particular program. We show how to handle traversal, allocation, and initialization of values in a wide variety of types, including functions, records, unions, ex- istentials, and covariant recursive types.

1 Introduction

When a host computer runs an untrusted program, the host may want some assurance that the program does no harm: does not access unauthorized resources, read pri- vatedata, oroverwritevaluabledata. Proof-carryingcode [Nec97] is a technique for providing such assurances. With PCC, the host - called the "code consumer" - spec- ifies asafety policy, which tells under what conditions a wordofmemorymaybe reador writtenorhowmuchofa resource(suchas CPU cycles)maybeused. Theprovider of the program- the "code producer"- must also provide a program-verification-styleproof that the program satis- fies these conditions. The host computer mechanically checks the proof before running the program. Two significant advantages of PCC are that (1) these proofs can be performed on the native machine code, so that no unsoundness can be introduced in translation from the proved program to the program that will exe- ?On sabbatical 1998-99. †Current address: University of Ottawa, afelty@site.uottawa.ca InThe 27th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 243-253, January 2000,c ?ACM.cute (in contrast, a JIT compiler can be 10

6lines of code

and therefore cannot possibly be free of bugs), and (2) for sufficiently simple safety policies and for programs be constructed fully automatically. Unlike typed assem- bly language [MWCG98], PCC can use both typesand dataflow to prove safety. Necula has demonstrated two instances of PCC safety policies: one for a subset of C [Nec98] and anotherfor an extremely restricted subset of ML [Nec97]. In our work we have generalized the approach and removed many re- strictions:

1. Instead of building type-inference rules into the

safety policy, we model the types via definitions from first principles, then prove the typing rules as lemmas. This makes the safety policy independent of the type system used by the program, so that pro- be sent to the same code consumer.

2. We show how to prove safe the allocation and ini-

tialization of data structures, not just the traversal of data.

3. We show how to handle a much wider variety of

types, including records, tagged variants, first-class functions,first-class labels, existentialtypes(i.e. ab- stract data types), union types, intersection types, and covariant recursive types.

4. We move the machine instruction semantics from

the verification-condition generator to the safety policy; this simplifies the trusted computing base at the expense of complicating the proofs, which is the right trade-off to make. updf?d?x?f ?def ?z?dz?f ?zx?d?z?f ?zfz addd?s1?s2r?m?r ??m ?defupd r?d?rs1 rs2?r ??mm addid?s?cr?m?r ??m ?defupd r?d?rs c?r ??mm loadd?s?cr?m?r ??m ?defreadable rs c?updr?d?mrs c?r ??mm stores1?s2?cr?m?r ??m ?defwritable rs2 c?updm?rs2 c?rs1?m ??rr jumpd?s?cr?m?r ??m ?def ?r ???updr?17?rs c?r ???updr ???d?r17?r ??mm bgts1?s2?cr?m?r ??m ?def rs1?rs2?updr?17?r17 c?rquotesdbs_dbs3.pdfusesText_6
[PDF] types of operators

[PDF] types of packets in usb protocol

[PDF] types of paragraph with examples pdf

[PDF] types of polynomials

[PDF] types of sentences

[PDF] types of service delivery

[PDF] types of sociology

[PDF] types of stakeholder engagement

[PDF] types of standardized test

[PDF] types of tickets

[PDF] types of topic sentences

[PDF] types of trade agreements

[PDF] typescript connect to mongodb

[PDF] typescript express mongoose

[PDF] typescript import express