blob: 315fd0d58f00869f01ae9167686a3acbfa54cafb (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
//: Support for dynamic allocation.
//:
//: Just provide a special label marking the first unused address in the data
//: segment. Then we'll write SubX helpers to make use of it.
:(before "Begin rewrite_global_variables")
insert_heap_global_variable(p);
:(code)
void insert_heap_global_variable(program& p) {
if (SIZE(p.segments) < 2)
return; // no data segment defined
// Start-of-heap:
p.segments.at(1).lines.push_back(label("Start-of-heap"));
}
line label(string s) {
line result;
result.words.push_back(word());
result.words.back().data = (s+":");
return result;
}
line imm32(const string& s) {
line result;
result.words.push_back(word());
result.words.back().data = s;
result.words.back().metadata.push_back("imm32");
return result;
}
|