aboutsummaryrefslogtreecommitdiff
path: root/tests/programs/memory_bounds.zc
blob: a929de3585e0a51e0173cda6cba338cc62330097 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
namespace;
include rt;

// raw word loads, stores, and stack picks outside memory follow portable semantics.
unchecked int raw_pick(int depth) { return asm { depth @ #6 }; }
unchecked fn main() {
	int p = -1;
	rt.put_n(*p); rt.put_c(32); *p = 7;
	p = 0x7FFFFFFF;
	rt.put_n(*p); rt.put_c(32); *p = 9;
	p = 0x100000000;
	rt.put_n(*p); rt.put_c(32);
	rt.put_n(raw_pick(0x100000000)); rt.put_c(32);
	rt.put_n(raw_pick(0 - 0x100000000)); rt.put_c(10);
	return 0;
}