Hardware enforcement of boundaries on the control, space, time, modularity, reference, initialization, and mutability aspects of software
AssigneeWhole Sky Technologies Company
InventorDaniel Shawcross Wilkerson
Life of this patent
Estimating the term…
Abstract
Modifications to existing computer hardware, compiler changes or source-to-source transforms performed during the software build process, and a collection of libraries and modifications to existing standard system software and libraries. The invention allows a program author to enforce various kinds of locality of causality in software to provide enforcement of boundaries for the following aspects of a computer program: control, space, time, modularity, reference, initialization, and mutability. Where these properties do not suffice to guarantee a property at static time, dynamic checks may be added and the constraints on control flow prevent such dynamic checks from being avoided by the program.
Claims3
A method for regulating an execution of a program on a computer, said method comprising:
- providing said computer with an absolute-pointer, said absolute-pointer comprising a target-address and an object-id, said target-address comprising a target address data-page-index and a target address data-page-offset,
- providing said computer with data addresses, said data addresses comprising a data address data-page-index and a data address data-page-offset, some of said data addresses comprising data,
- annotating some of said data-page indexes with a data-page meta-datum, at least one of said data-page meta-datum comprising a page-class-id,
- annotating at least one of said page-class-ids with a page-class-meta-datum using a page-class-id-map,
- annotating at least one page-class-meta-datum with a map-object-metadata-table, said map-object-metadata-table annotating said object-id with an object-metadatum comprised of metadata,
- providing at least one said object-metadatum with an object-start and an object-length,
- providing said computer with a memory-access instruction which accesses data at said target-address through said absolute-pointer,
- when a memory-access instruction attempts to access data at said target-address through said absolute-pointer, performing the following steps:
- finding said data-page meta-datum annotated onto said target address data-page-index,
- finding said page-class-id of said data-page meta-datum,
- finding said page-class-meta-datum annotated onto said page-class-id using said page-class-id-map,
- finding said map-object-metadata-table annotated onto said page-class-meta-datum,
- finding said object-metadatum annotated by said map-object-metadata-table onto said object-id of said absolute-pointer,
- finding said object-start and said object-length of said object-metadatum,
- computing an object-end as a sum of said object-start and said object-length,
- checking if said target-address of said absolute-pointer is greater than or equal to said object-start,
- if said target-address of said absolute-pointer is not greater than or equal to said object-start, raising a fault,
- if said target-address of said absolute pointer is greater than or equal to said object start, checking if said target-address of said absolute-pointer plus an access-width is less than or equal to said object-end,
- if said target-address of said absolute-pointer plus said access-width is not less than or equal to said object-end, raising a fault.
Dependencies are inferred from the claim text.