Felder |
Felder werden wie normale Variablen deklariert. Der einzige Unterschied sind die Dimensionsangaben: int a[10];Dieses Feld kann "10" short Zahlen speichern. Um in ein Feld zu schreiben verwenden wir einen speziellen move Befehl: move_i_a L0, a, L1;Das erste Argument ist der zu schreibende Wert, der zweite ist das Feld und der dritte ist der Feldindex. Aus einem Feld lesen: move_a_i a, L1, L0; array.na 1| int a[10]; 2| 3| push_i 0, L0; 4| push_i 9, L1; 5| 6| lab init_a; 7| move_i_a L0, a, L0; 8| inc_l L0; 9| lseq_l L0, L1, L2; 10| jmp_l L2, init_a; 11| 12| push_i 0, L0; 13| push_i 1, L2; 14| 15| lab print_a; 16| move_a_i a, L0, L3; 17| print_l L3; 18| print_n L2; 19| inc_l L0; 20| lseq_l L0, L1, L4; 21| jmp_l L4, print_a; 22| 23| push_i 0, L0; 24| exit L0; BefehleL = long Register, D = double Register BV = byte Variable, IV = int Variable, LV = long int Variable DV = double Variable LI = array index Register zu Feldmove_i_a L, IV, LI; move_l_a L, LV, LI; move_d_a D, DV, LI; move_b_a L, BV, LI; Feld zu Registermove_a_i IV, LI, L; move_a_l LV, LI, L; move_a_d DV, LI, D; move_a_b BV, LI, L; Feld freigebenUm den Speicher, den ein Feld belegt freizugeben, kann "dealloc" verwendet werden.Wenn ein Programm versucht ein freigegebenes Feld zu lesen oder zu schreiben, dann wird ein "overflow" Fehler ausgegeben. dealloc a; Feld "a" freigebenNano gibt alle Variablen am Programmende frei. Man kann es dazu verwenden um die Feldgrösse zu verändern. Feldgrösse verändernUm die Feldgrösse zu verändern, müssen wir es zuerst freigeben. Danach deklarieren wir esmit einer neuen Grösse. Das sieht wie folgt aus: int size; push_i 10, L0; pull_i L0, size; int a[size]; Platz für 10 int Variablen ... dealloc a; Feld freigeben push_i 20, L0; pull_i L0, size; int a[size]; Platz für 20 int VariablenPrev: Sprünge | Next: Strings |