link to compcert
authorRalf Jung <post@ralfj.de>
Tue, 24 Jul 2018 15:38:36 +0000 (17:38 +0200)
committerRalf Jung <post@ralfj.de>
Tue, 24 Jul 2018 15:40:37 +0000 (17:40 +0200)
ralf/_posts/2018-07-24-pointers-and-bytes.md

index 8338de4274e405b5a347cbf3973a9a44c06b3eeb..3211346c9f705afd635aeef8ab739b3fb2b20246 100644 (file)
@@ -111,7 +111,7 @@ So, what *is* a pointer?
 I don't know the full answer to this.
 In fact, this is an open area of research.
 
-Here's a simple proposal (in fact, this is the model used in my [RustBelt work]({{ site.baseurl }}{% post_url 2017-07-08-rustbelt %}), and it is also how [miri](https://github.com/solson/miri/) implements pointers):
+Here's a simple proposal (in fact, this is the model of pointers used in [CompCert](https://hal.inria.fr/hal-00703441/document) and my [RustBelt work]({{ site.baseurl }}{% post_url 2017-07-08-rustbelt %}), and it is also how [miri](https://github.com/solson/miri/) implements pointers):
 A pointer is a pair of some kind of ID uniquely identifying the *allocation*, and an *offset* into the allocation.
 Adding/subtracting an integer to/from a pointer just acts on the offset, and can thus never leave the allocation.
 Subtracting a pointer from another is only allowed when both point to the same allocation (matching [C++](https://timsong-cpp.github.io/cppwp/n4140/expr.add#6)).[^2]