diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-02-22 00:08:25 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-02-22 00:08:25 -0800 |
commit | ab9e2eaee0e7361a9ea4cb65011873d44100ff51 (patch) | |
tree | 675f555672405ef107e7391532c634a5fe1037fa /cpp | |
parent | 94a833c7b3e7c7b206cd3deead8e16f7992526dc (diff) | |
download | mu-ab9e2eaee0e7361a9ea4cb65011873d44100ff51.tar.gz |
813
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/.traces/copy_multiple_locations | 8 | ||||
-rw-r--r-- | cpp/.traces/get | 14 | ||||
-rw-r--r-- | cpp/.traces/get_address | 6 | ||||
-rw-r--r-- | cpp/017record | 35 |
4 files changed, 30 insertions, 33 deletions
diff --git a/cpp/.traces/copy_multiple_locations b/cpp/.traces/copy_multiple_locations index 9711636e..9804de88 100644 --- a/cpp/.traces/copy_multiple_locations +++ b/cpp/.traces/copy_multiple_locations @@ -2,8 +2,8 @@ parse/0: instruction: 1 parse/0: ingredient: {name: "34", type: 0} parse/0: product: {name: "1", type: 1} parse/0: instruction: 1 -parse/0: ingredient: {name: "0", type: 0} -parse/0: product: {name: "2", type: 3} +parse/0: ingredient: {name: "35", type: 0} +parse/0: product: {name: "2", type: 1} parse/0: instruction: 1 parse/0: ingredient: {name: "1", type: 4} parse/0: product: {name: "3", type: 4} @@ -11,11 +11,11 @@ run/0: instruction 0 run/0: ingredient 0 is 34 mem/0: storing in location 1 run/0: instruction 1 -run/0: ingredient 0 is 0 +run/0: ingredient 0 is 35 mem/0: storing in location 2 run/0: instruction 2 run/0: ingredient 0 is 1 mem/0: location 1 is 34 -mem/0: location 2 is 0 +mem/0: location 2 is 35 mem/0: storing in location 3 mem/0: storing in location 4 diff --git a/cpp/.traces/get b/cpp/.traces/get index e0a7b242..3f5a996e 100644 --- a/cpp/.traces/get +++ b/cpp/.traces/get @@ -2,23 +2,23 @@ parse/0: instruction: 1 parse/0: ingredient: {name: "34", type: 0} parse/0: product: {name: "12", type: 1} parse/0: instruction: 1 -parse/0: ingredient: {name: "0", type: 0} -parse/0: product: {name: "13", type: 3} +parse/0: ingredient: {name: "35", type: 0} +parse/0: product: {name: "13", type: 1} parse/0: instruction: 18 parse/0: ingredient: {name: "12", type: 4} parse/0: ingredient: {name: "1", type: 0} -parse/0: product: {name: "15", type: 3} +parse/0: product: {name: "15", type: 1} run/0: instruction 0 run/0: ingredient 0 is 34 mem/0: storing in location 12 run/0: instruction 1 -run/0: ingredient 0 is 0 +run/0: ingredient 0 is 35 mem/0: storing in location 13 run/0: instruction 2 run/0: ingredient 0 is 12 run/0: ingredient 1 is 1 run/0: address to copy is 13 -run/0: its type is 3 -mem/0: location 13 is 0 -run/0: product 0 is 0 +run/0: its type is 1 +mem/0: location 13 is 35 +run/0: product 0 is 35 mem/0: storing in location 15 diff --git a/cpp/.traces/get_address b/cpp/.traces/get_address index 2635ebe0..680b230b 100644 --- a/cpp/.traces/get_address +++ b/cpp/.traces/get_address @@ -2,8 +2,8 @@ parse/0: instruction: 1 parse/0: ingredient: {name: "34", type: 0} parse/0: product: {name: "12", type: 1} parse/0: instruction: 1 -parse/0: ingredient: {name: "0", type: 0} -parse/0: product: {name: "13", type: 3} +parse/0: ingredient: {name: "35", type: 0} +parse/0: product: {name: "13", type: 1} parse/0: instruction: 19 parse/0: ingredient: {name: "12", type: 4} parse/0: ingredient: {name: "1", type: 0} @@ -12,7 +12,7 @@ run/0: instruction 0 run/0: ingredient 0 is 34 mem/0: storing in location 12 run/0: instruction 1 -run/0: ingredient 0 is 0 +run/0: ingredient 0 is 35 mem/0: storing in location 13 run/0: instruction 2 run/0: ingredient 0 is 12 diff --git a/cpp/017record b/cpp/017record index 5254e807..3248eb49 100644 --- a/cpp/017record +++ b/cpp/017record @@ -1,28 +1,25 @@ // Support for records. :(before "End Mu Types") -// We'll use this record as a running example, with two fields: an integer and -// a boolean. -int integer_boolean = Type_number["integer-boolean"] = Next_type_number++; -Type[integer_boolean].size = 2; -Type[integer_boolean].is_record = true; +// We'll use this record as a running example, with two integer fields +int point = Type_number["point"] = Next_type_number++; +Type[point].size = 2; +Type[point].is_record = true; vector<type_number> i; i.push_back(integer); -Type[integer_boolean].elements.push_back(i); -vector<type_number> b; -b.push_back(boolean); -Type[integer_boolean].elements.push_back(b); +Type[point].elements.push_back(i); +Type[point].elements.push_back(i); :(scenario copy_multiple_locations) # Records can be copied around with a single instruction just like integers, # no matter how large they are. recipe main [ 1:integer <- copy 34:literal - 2:boolean <- copy 0:literal - 3:integer-boolean <- copy 1:integer-boolean + 2:integer <- copy 35:literal + 3:point <- copy 1:point ] +run: ingredient 0 is 1 +mem: location 1 is 34 -+mem: location 2 is 0 ++mem: location 2 is 35 +mem: storing in location 3 +mem: storing in location 4 @@ -60,16 +57,16 @@ case GET: { :(scenario "get") recipe main [ 12:integer <- copy 34:literal - 13:boolean <- copy 0:literal - 15:boolean <- get 12:integer-boolean, 1:offset + 13:integer <- copy 35:literal + 15:integer <- get 12:point, 1:offset ] +run: instruction 2 +run: ingredient 0 is 12 +run: ingredient 1 is 1 +run: address to copy is 13 -+run: its type is 3 -+mem: location 13 is 0 -+run: product 0 is 0 ++run: its type is 1 ++mem: location 13 is 35 ++run: product 0 is 35 +mem: storing in location 15 :(before "End Globals") @@ -101,8 +98,8 @@ case GET_ADDRESS: { :(scenario "get_address") recipe main [ 12:integer <- copy 34:literal - 13:boolean <- copy 0:literal - 15:address:integer <- get-address 12:integer-boolean, 1:offset + 13:integer <- copy 35:literal + 15:address:integer <- get-address 12:point, 1:offset ] +run: instruction 2 +run: ingredient 0 is 12 |