#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define NO 0
#define WEST 1
#define EAST 2
#define MAX_NODES 64
#define STACKS_MAX 4
#define STACKS_COND_MAX 3
char *op_names [] = {"==",
"!=",
">",
">=",
"<",
"<=",
"+",
"++",
"-",
"--",
"<<",
">>",
"<|",
"|>",
"and",
"not",
"or",
"xor",
"+",
"++",
"-",
"--",
"<<",
">>",
"<|",
"|>",
"and",
"not",
"or",
"xor",
"<-"
};
#define OP_CMP_EQ_REG_CONST 0
#define OP_CMP_NE_REG_CONST 1
#define OP_CMP_GR_REG_CONST 2
#define OP_CMP_GE_REG_CONST 3
#define OP_CMP_LT_REG_CONST 4
#define OP_CMP_LE_REG_CONST 5
#define OP_ADD_REG_REG_CONST 6
#define OP_INC_REG_REG_CONST 7
#define OP_SUB_REG_REG_CONST 8
#define OP_DEC_REG_REG_CONST 9
#define OP_SLL_REG_REG_CONST 10
#define OP_SLR_REG_REG_CONST 11
#define OP_RL_REG_REG_CONST 12
#define OP_RR_REG_REG_CONST 13
#define OP_AND_REG_REG_CONST 14
#define OP_NOT_REG_REG_CONST 15
#define OP_OR_REG_REG_CONST 16
#define OP_EXOR_REG_REG_CONST 17
#define OP_ADD_REG_REG_REG 18
#define OP_INC_REG_REG_REG 19
#define OP_SUB_REG_REG_REG 20
#define OP_DEC_REG_REG_REG 21
#define OP_SLL_REG_REG_REG 22
#define OP_SLR_REG_REG_REG 23
#define OP_RL_REG_REG_REG 24
#define OP_RR_REG_REG_REG 25
#define OP_AND_REG_REG_REG 26
#define OP_NOT_REG_REG_REG 27
#define OP_OR_REG_REG_REG 28
#define OP_EXOR_REG_REG_REG 29
#define OP_ASSIGNMENT_REG_CONST 30
#define NA -1
#define EMPTY -2
#define STACK_UNDERFLOW -3
#define STACK_OPCODE 0
#define STACK_OP1 1
#define STACK_OP2 2
#define STACK_OP3 3
#define MAX_COND 3
#define CONST_MAX 32
#define STACK_CONDITION_Z 0
#define STACK_CONDITION_LEFT_END 1
#define STACK_CONDITION_RIGHT_END 2
int stack [STACKS_MAX][MAX_NODES];
int stack_cond [STACKS_COND_MAX][MAX_NODES];
int stack_ptr [STACKS_MAX];
int queue_ptr [STACKS_MAX];
int queue_cond_ptr [STACKS_COND_MAX];
int stack_cond_ptr [STACKS_COND_MAX];
void init_stack (void) {
int i;
for (i = 0; i < STACKS_MAX; i++) {
stack_ptr [i] = 0;
}
for (i = 0; i < STACKS_COND_MAX; i++)
stack_cond_ptr [i] = 0;
return;
}
void queue_init (void) {
int i;
for (i = 0; i < STACKS_MAX; i++) {
queue_ptr [i] = 0;
}
for (i = 0; i < STACKS_COND_MAX; i++) {
queue_cond_ptr [i] = 0;
}
return;
}
void push (int stck, int v) {
if (stack_ptr[stck] < (MAX_NODES-1)) {
stack [stck][stack_ptr [stck]] = v;
stack_ptr [stck]++;
}
return;
}
int pop (int stck) {
if (stack_ptr [stck] > 0) {
stack_ptr [stck]--;
return stack [stck][stack_ptr [stck]];
}
else
return STACK_UNDERFLOW;
}
int getstckptr (int stck) {
return stack_ptr [stck];
}
int get (int stck) {
if (queue_ptr [stck] < stack_ptr [stck]) {
return stack [stck][queue_ptr [stck]++];
}
else return EMPTY;
}
void unget (int stck) {
if (queue_ptr [stck] > 0)
queue_ptr [stck]--;
}
void push_cond (int stck_cond, int v) {
if (stack_cond_ptr [stck_cond] < (MAX_NODES-1)) {
stack_cond [stck_cond][stack_cond_ptr[stck_cond]] = v;
stack_cond_ptr [stck_cond]++;
}
}
int pop_cond (int stck_cond) {
if (stack_cond_ptr [stck_cond] > 0) {
stack_cond_ptr [stck_cond]--;
return stack_cond [stck_cond][stack_cond_ptr [stck_cond]];
}
else
return -1;
}
int get_cond (int stck_cond) {
if (queue_cond_ptr [stck_cond] < stack_cond_ptr [stck_cond]) {
return stack_cond [stck_cond][queue_cond_ptr [stck_cond]++];
}
else return EMPTY;
}
int regmax = 0;
/*
* reg ::= op reg reg reg | op reg reg const | op const
* cond ::= op_cmp reg const addr1 addr2
*/
void init () {
int i = 0;
int cond_count = MAX_COND;
int cond_least = 0;
int op;
int imax = (rand () % 6) + 5;
int lastreg;
int r;
push (STACK_OPCODE, OP_ASSIGNMENT_REG_CONST); // Assignment at begin
push (STACK_OP1, 0); // Register R0 ()
push (STACK_OP2, rand () % CONST_MAX); // Const
push (STACK_OP3, NA); // Operand 3, assignment, not given
for (i = 1; i < imax; i++) {
op = rand () % (OP_EXOR_REG_REG_REG+1);
if ((op <= OP_CMP_LE_REG_CONST) \&\& (cond_least == 0)) {
if (cond_count > 0) {
cond_count--;
lastreg = pop (STACK_OP1);
push (STACK_OP1, lastreg);
push (STACK_OPCODE, op);
push (STACK_OP1, lastreg);
push (STACK_OP2, rand () % CONST_MAX);
push (STACK_OP3, NA );
cond_least = 2;
if ((i + cond_least) > imax) {
imax += cond_least;
}
}
else {
i--;
}
}
else if (op > OP_CMP_LE_REG_CONST){
if (cond_least != 0)
cond_least--;
lastreg = pop (STACK_OP1);
push (STACK_OP1, lastreg);
push (STACK_OPCODE, op);
push (STACK_OP1, lastreg+1);
push (STACK_OP2, lastreg);
if ((op >= OP_ADD_REG_REG_REG) \&\& (op <= OP_EXOR_REG_REG_REG)) {
r = (rand () % (lastreg+1))-1;
if (r < 0)
r = 0;
push (STACK_OP3, r);
}
else
push (STACK_OP3, rand () % CONST_MAX);
}
else
i--;
}
push (STACK_OPCODE, EMPTY);
push (STACK_OP1, EMPTY);
push (STACK_OP2, EMPTY);
push (STACK_OP3, EMPTY);
}
void test_output (void) {
int p, o1, o2, o3;
while ((p = get (STACK_OPCODE)) != EMPTY) {
if ((p >= OP_CMP_EQ_REG_CONST) \&\& (p <= OP_CMP_LE_REG_CONST)) {
printf ("R%i %s %in", get (STACK_OP1), op_names [p], get(STACK_OP2));
get (STACK_OP3);
}
else if (p == OP_ASSIGNMENT_REG_CONST) {
printf ("R%i %s %in", get (STACK_OP1), op_names [p], get(STACK_OP2));
get (STACK_OP3);
}
else {
if ((p == OP_INC_REG_REG_CONST) || (p == OP_INC_REG_REG_REG) || (p == OP_DEC_REG_REG_CONST) || (p == OP_DEC_REG_REG_REG)) {
printf ("R%i %s R%i %sn", get (STACK_OP1), op_names [OP_ASSIGNMENT_REG_CONST], get (STACK_OP2), op_names [p]);
get (STACK_OP3);
}
else if ((p >= OP_ADD_REG_REG_CONST) \&\& (p <= OP_EXOR_REG_REG_CONST))
printf ("R%i %s R%i %s %in", get (STACK_OP1), op_names [OP_ASSIGNMENT_REG_CONST], get (STACK_OP2), op_names [p], get (STACK_OP3));
else
printf ("R%i %s R%i %s R%in", get (STACK_OP1), op_names [OP_ASSIGNMENT_REG_CONST], get (STACK_OP2), op_names [p], get (STACK_OP3));
}
}
}
int expr (int z, int zs, int dir) {
int p = get (STACK_OPCODE);
if (dir == NO) {
printf BITTE IM PDF NACHGUCKEN
}
else if (dir == WEST) {
printf BITTE IM PDF NACHGUCKEN
}
else if (dir == EAST) {
printf BITTE IM PDF NACHGUCKEN
}
if (p == OP_ASSIGNMENT_REG_CONST) {
printf ("R%i %s %i", get (STACK_OP1), op_names [p], get(STACK_OP2));
get (STACK_OP3);
}
else if ((p == OP_INC_REG_REG_CONST) || (p == OP_INC_REG_REG_REG) || (p == OP_DEC_REG_REG_CONST) || (p == OP_DEC_REG_REG_REG)) {
printf ("R%i %s R%i %s", get (STACK_OP1), op_names [OP_ASSIGNMENT_REG_CONST], get (STACK_OP2), op_names [p]);
get (STACK_OP3);
}
else if ((p >= OP_ADD_REG_REG_CONST) \&\& (p <= OP_EXOR_REG_REG_CONST))
printf ("R%i %s R%i %s %i", get (STACK_OP1), op_names [OP_ASSIGNMENT_REG_CONST], get (STACK_OP2), op_names [p], get (STACK_OP3));
else {
printf ("R%i %s R%i %s R%i", get (STACK_OP1), op_names [OP_ASSIGNMENT_REG_CONST], get (STACK_OP2), op_names [p], get (STACK_OP3));
}
printf (""};n");
printf ("\node [above=0mm of z%i, text width=8em] {\$Z_{%i}\$};n", z, z);
if (z != 1) {
if (dir == NO) {
printf ("\draw [->] (z%i) -- (z%i);nn", zs, z);
}
else if (dir == WEST) {
printf ("\draw [->] (z%i.west) -- (z%i);nn", zs, z);
}
else if (dir == EAST) {
printf ("\draw [->] (z%i.east) -- (z%i);nn", zs, z);
}
}
return z;
}
int cond (int z, int zs, int dir) {
int p = get (STACK_OPCODE);
if (dir == NO) {
printf BITTE IM PDF NACHGUCKEN
}
else if (dir == WEST) {
printf BITTE IM PDF NACHGUCKEN
}
else if (dir == EAST) {
printf BITTE IM PDF NACHGUCKEN
}
printf ("R%i %s %i", get (STACK_OP1), op_names [p], get(STACK_OP2));
get (STACK_OP3);
printf (""};n");
printf ("\node [above=0mm of z%i, text width=8em] {\$Z_{%i}\$};n", z, z);
if (z != 1) {
if (dir == NO) {
printf ("\draw [->] (z%i) -- (z%i);nn", zs, z);
}
else if (dir == WEST) {
printf ("\draw [->] (z%i.west) -- (z%i);nn", zs, z);
}
else if (dir == EAST) {
printf ("\draw [->] (z%i.east) -- (z%i);nn", zs, z);
}
}
push_cond (STACK_CONDITION_Z, z);
return z;
}
int as (int z, int zs, int dir, int steps) {
int ztmp;
int r, rtmp;
int stepsr;
int stepss;
if (steps > 0) {
r = get (STACK_OPCODE);
if ((r >= OP_CMP_EQ_REG_CONST) \&\& (r <= OP_CMP_LE_REG_CONST)){
unget (STACK_OPCODE);
z = ztmp = cond (z+1, z, dir);
stepsr = (rand () % 2) * steps;
stepss = steps - stepsr;
z = as (z, z, WEST, stepsr);
push_cond (STACK_CONDITION_LEFT_END, z);
z = as (z, ztmp, EAST, stepss);
push_cond (STACK_CONDITION_RIGHT_END, z);
}
else if (r != EMPTY) {
unget (STACK_OPCODE);
z = expr (z+1, zs, dir);
z = as (z, z, NO, steps-1);
}
}
return z;
}
void make_condition_connections () {
int c1, c2;
int r, l;
//int c;
/*while ((c = pop_cond (STACK_CONDITION_Z)) != -1) {
r = pop_cond (STACK_CONDITION_RIGHT_END);
l = pop_cond (STACK_CONDITION_LEFT_END);
if ((r - c) >= (l - c)) {
printf ("\draw [->] (z%i) -- (z%i);nn", l, c-1);
//printf ("\draw [->] (z%i.west) |- (z%i);nn", r, 1);
}
else {
printf ("\draw [->] (z%i) -- (z%i);nn", r, c-1);
//printf ("\draw [->] (z%i.west) |- (z%i);nn", l, 1);
}
}*/
c1 = 0;
while ((c2 = get_cond (STACK_CONDITION_Z)) != EMPTY) {
r = get_cond (STACK_CONDITION_RIGHT_END);
l = get_cond (STACK_CONDITION_LEFT_END);
if (r > l) {
printf ("\draw [->] (z%i.west) |- (z%i);nn", c2, c1+1);
}
else {
printf ("\draw [->] (z%i.east) |- (z%i);nn", c2, c1+1);
}
c1 = c2;
}
}
int main (void) {
time_t t;
int j;
srand (t = time(NULL));
init_stack ();
queue_init ();
init ();
//test_output ();
printf("\documentclass{article}n");
printf("\usepackage[utf8]{inputenc}n");
printf("\usepackage{pgf, tikz}n");
printf("\usetikzlibrary{shapes, chains, calc, arrows, positioning}nn");
printf("\begin{document}nn");
queue_init ();
printf("\begin{center}n");
printf("\begin{tikzpicture}[%n");
printf("t>=triangle 60, n");
printf("tstart chain=going below, n");
printf("tnode distance=6mm and 60mm, n");
printf("tevery join/.style={norm},n");
printf("]n");
printf("\tikzset{n");
printf("base/.style={draw, on chain, on grid, align=center, minimum height=4ex},n");
printf("zbox/.style={base, rectangle, text width=8em},n");
printf("ebox/.style={base, diamond, aspect=1.5, text width=10em},n");
printf("term/.style={zbox, rounded corners},n");
printf("norm/.style={->, draw},n");
printf("coord/.style={coordinate, on chain, on grid, node distance=6mm and 25mm}}nn");
as (0, 0, NO, getstckptr (STACK_OPCODE));
make_condition_connections ();
printf ("\end{tikzpicture}nn");
printf ("\end{center}nn");
printf("\end{document}n");
return 0;
}
documentclass{article}
usepackage[utf8]{inputenc}
usepackage{pgf, tikz}
usetikzlibrary{shapes, chains, calc, arrows, positioning}
begin{document}
begin{center}
begin{tikzpicture}[%
>=triangle 60,
start chain=going below,
node distance=6mm and 60mm,
every join/.style={norm},
]
tikzset{
base/.style={draw, on chain, on grid, align=center, minimum height=4ex},
zbox/.style={base, rectangle, text width=8em},
ebox/.style={base, diamond, aspect=1.5, text width=10em},
term/.style={zbox, rounded corners},
norm/.style={->, draw},
coord/.style={coordinate, on chain, on grid, node distance=6mm and 25mm}}
node [zbox] (z1) {verb"R0 <- 17"};
node [above=0mm of z1, text width=8em] {\$Z_{1}\$};
node [zbox] (z2) {verb"R1 <- R0 - 3"};
node [above=0mm of z2, text width=8em] {\$Z_{2}\$};
draw [->] (z1) -- (z2);
node [zbox] (z3) {verb"R2 <- R1 + 21"};
node [above=0mm of z3, text width=8em] {\$Z_{3}\$};
draw [->] (z2) -- (z3);
node [zbox] (z4) {verb"R3 <- R2 >> R0"};
node [above=0mm of z4, text width=8em] {\$Z_{4}\$};
draw [->] (z3) -- (z4);
node [zbox] (z5) {verb"R4 <- R3 + 16"};
node [above=0mm of z5, text width=8em] {\$Z_{5}\$};
draw [->] (z4) -- (z5);
node [zbox] (z6) {verb"R5 <- R4 or R2"};
node [above=0mm of z6, text width=8em] {\$Z_{6}\$};
draw [->] (z5) -- (z6);
node [ebox] (z7) {verb"R5 != 16"};
node [above=0mm of z7, text width=8em] {\$Z_{7}\$};
draw [->] (z6) -- (z7);
node [zbox, below=of z7.west, yshift=-4em] (z8) {verb"R6 <- R5 xor R3"};
node [above=0mm of z8, text width=8em] {\$Z_{8}\$};
draw [->] (z7.west) -- (z8);
node [zbox] (z9) {verb"R7 <- R6 << 22"};
node [above=0mm of z9, text width=8em] {\$Z_{9}\$};
draw [->] (z8) -- (z9);
node [zbox] (z10) {verb"R8 <- R7 not R0"};
node [above=0mm of z10, text width=8em] {\$Z_{10}\$};
draw [->] (z9) -- (z10);
draw [->] (z7.east) |- (z1);
end{tikzpicture}
end{center}
end{document}
documentclass{article}
usepackage[utf8]{inputenc}
usepackage{pgf, tikz}
usetikzlibrary{shapes, chains, calc, arrows, positioning}
begin{document}
begin{center}
begin{tikzpicture}[%
>=triangle 60,
start chain=going below,
node distance=6mm and 60mm,
every join/.style={norm},
]
tikzset{
base/.style={draw, on chain, on grid, align=center, minimum height=4ex},
zbox/.style={base, rectangle, text width=8em},
ebox/.style={base, diamond, aspect=1.5, text width=10em},
term/.style={zbox, rounded corners},
norm/.style={->, draw},
coord/.style={coordinate, on chain, on grid, node distance=6mm and 25mm}}
node [zbox] (z1) {verb"R0 <- 25"};
node [above=0mm of z1, text width=8em] {\$Z_{1}\$};
node [zbox] (z2) {verb"R1 <- R0 >> R0"};
node [above=0mm of z2, text width=8em] {\$Z_{2}\$};
draw [->] (z1) -- (z2);
node [zbox] (z3) {verb"R2 <- R1 |> R0"};
node [above=0mm of z3, text width=8em] {\$Z_{3}\$};
draw [->] (z2) -- (z3);
node [ebox] (z4) {verb"R2 <= 25"};
node [above=0mm of z4, text width=8em] {\$Z_{4}\$};
draw [->] (z3) -- (z4);
node [zbox, below=of z4.west, yshift=-4em] (z5) {verb"R3 <- R2 ++"};
node [above=0mm of z5, text width=8em] {\$Z_{5}\$};
draw [->] (z4.west) -- (z5);
node [zbox] (z6) {verb"R4 <- R3 xor 14"};
node [above=0mm of z6, text width=8em] {\$Z_{6}\$};
draw [->] (z5) -- (z6);
node [zbox] (z7) {verb"R5 <- R4 + 28"};
node [above=0mm of z7, text width=8em] {\$Z_{7}\$};
draw [->] (z6) -- (z7);
draw [->] (z4.east) |- (z1);
end{tikzpicture}
end{center}
end{document}
documentclass{article}
usepackage[utf8]{inputenc}
usepackage{pgf, tikz}
usetikzlibrary{shapes, chains, calc, arrows, positioning}
begin{document}
begin{center}
begin{tikzpicture}[%
>=triangle 60,
start chain=going below,
node distance=6mm and 60mm,
every join/.style={norm},
]
tikzset{
base/.style={draw, on chain, on grid, align=center, minimum height=4ex},
zbox/.style={base, rectangle, text width=8em},
ebox/.style={base, diamond, aspect=1.5, text width=10em},
term/.style={zbox, rounded corners},
norm/.style={->, draw},
coord/.style={coordinate, on chain, on grid, node distance=6mm and 25mm}}
node [zbox] (z1) {verb"R0 <- 4"};
node [above=0mm of z1, text width=8em] {\$Z_{1}\$};
node [zbox] (z2) {verb"R1 <- R0 - 7"};
node [above=0mm of z2, text width=8em] {\$Z_{2}\$};
draw [->] (z1) -- (z2);
node [zbox] (z3) {verb"R2 <- R1 + 5"};
node [above=0mm of z3, text width=8em] {\$Z_{3}\$};
draw [->] (z2) -- (z3);
node [ebox] (z4) {verb"R2 >= 23"};
node [above=0mm of z4, text width=8em] {\$Z_{4}\$};
draw [->] (z3) -- (z4);
node [zbox, below=of z4.west, yshift=-4em] (z5) {verb"R3 <- R2 ++"};
node [above=0mm of z5, text width=8em] {\$Z_{5}\$};
draw [->] (z4.west) -- (z5);
node [zbox] (z6) {verb"R4 <- R3 not R0"};
node [above=0mm of z6, text width=8em] {\$Z_{6}\$};
draw [->] (z5) -- (z6);
node [zbox] (z7) {verb"R5 <- R4 << 2"};
node [above=0mm of z7, text width=8em] {\$Z_{7}\$};
draw [->] (z6) -- (z7);
node [zbox] (z8) {verb"R6 <- R5 not R0"};
node [above=0mm of z8, text width=8em] {\$Z_{8}\$};
draw [->] (z7) -- (z8);
node [zbox] (z9) {verb"R7 <- R6 + R5"};
node [above=0mm of z9, text width=8em] {\$Z_{9}\$};
draw [->] (z8) -- (z9);
node [zbox] (z10) {verb"R8 <- R7 --"};
node [above=0mm of z10, text width=8em] {\$Z_{10}\$};
draw [->] (z9) -- (z10);
draw [->] (z4.east) |- (z1);
end{tikzpicture}
end{center}
end{document}
documentclass{article}
usepackage[utf8]{inputenc}
usepackage{pgf, tikz}
usetikzlibrary{shapes, chains, calc, arrows, positioning}
begin{document}
begin{center}
begin{tikzpicture}[%
>=triangle 60,
start chain=going below,
node distance=6mm and 60mm,
every join/.style={norm},
]
tikzset{
base/.style={draw, on chain, on grid, align=center, minimum height=4ex},
zbox/.style={base, rectangle, text width=8em},
ebox/.style={base, diamond, aspect=1.5, text width=10em},
term/.style={zbox, rounded corners},
norm/.style={->, draw},
coord/.style={coordinate, on chain, on grid, node distance=6mm and 25mm}}
node [zbox] (z1) {verb"R0 <- 5"};
node [above=0mm of z1, text width=8em] {\$Z_{1}\$};
node [zbox] (z2) {verb"R1 <- R0 --"};
node [above=0mm of z2, text width=8em] {\$Z_{2}\$};
draw [->] (z1) -- (z2);
node [zbox] (z3) {verb"R2 <- R1 >> R0"};
node [above=0mm of z3, text width=8em] {\$Z_{3}\$};
draw [->] (z2) -- (z3);
node [ebox] (z4) {verb"R2 == 23"};
node [above=0mm of z4, text width=8em] {\$Z_{4}\$};
draw [->] (z3) -- (z4);
node [zbox, below=of z4.west, yshift=-4em] (z5) {verb"R3 <- R2 --"};
node [above=0mm of z5, text width=8em] {\$Z_{5}\$};
draw [->] (z4.west) -- (z5);
node [zbox] (z6) {verb"R4 <- R3 + 8"};
node [above=0mm of z6, text width=8em] {\$Z_{6}\$};
draw [->] (z5) -- (z6);
draw [->] (z4.east) |- (z1);
end{tikzpicture}
end{center}
end{document}
documentclass{article}
usepackage[utf8]{inputenc}
usepackage{pgf, tikz}
usetikzlibrary{shapes, chains, calc, arrows, positioning}
begin{document}
begin{center}
begin{tikzpicture}[%
>=triangle 60,
start chain=going below,
node distance=6mm and 60mm,
every join/.style={norm},
]
tikzset{
base/.style={draw, on chain, on grid, align=center, minimum height=4ex},
zbox/.style={base, rectangle, text width=8em},
ebox/.style={base, diamond, aspect=1.5, text width=10em},
term/.style={zbox, rounded corners},
norm/.style={->, draw},
coord/.style={coordinate, on chain, on grid, node distance=6mm and 25mm}}
node [zbox] (z1) {verb"R0 <- 13"};
node [above=0mm of z1, text width=8em] {\$Z_{1}\$};
node [zbox] (z2) {verb"R1 <- R0 or R0"};
node [above=0mm of z2, text width=8em] {\$Z_{2}\$};
draw [->] (z1) -- (z2);
node [zbox] (z3) {verb"R2 <- R1 xor 15"};
node [above=0mm of z3, text width=8em] {\$Z_{3}\$};
draw [->] (z2) -- (z3);
node [zbox] (z4) {verb"R3 <- R2 >> 14"};
node [above=0mm of z4, text width=8em] {\$Z_{4}\$};
draw [->] (z3) -- (z4);
node [ebox] (z5) {verb"R3 > 7"};
node [above=0mm of z5, text width=8em] {\$Z_{5}\$};
draw [->] (z4) -- (z5);
node [zbox, below=of z5.west, yshift=-4em] (z6) {verb"R4 <- R3 not 10"};
node [above=0mm of z6, text width=8em] {\$Z_{6}\$};
draw [->] (z5.west) -- (z6);
node [zbox] (z7) {verb"R5 <- R4 or 16"};
node [above=0mm of z7, text width=8em] {\$Z_{7}\$};
draw [->] (z6) -- (z7);
node [zbox] (z8) {verb"R6 <- R5 not R1"};
node [above=0mm of z8, text width=8em] {\$Z_{8}\$};
draw [->] (z7) -- (z8);
node [zbox] (z9) {verb"R7 <- R6 |> 12"};
node [above=0mm of z9, text width=8em] {\$Z_{9}\$};
draw [->] (z8) -- (z9);
draw [->] (z5.east) |- (z1);
end{tikzpicture}
end{center}
end{document}
documentclass{article}
usepackage[utf8]{inputenc}
usepackage{pgf, tikz}
usetikzlibrary{shapes, chains, calc, arrows, positioning}
begin{document}
begin{center}
begin{tikzpicture}[%
>=triangle 60,
start chain=going below,
node distance=6mm and 60mm,
every join/.style={norm},
]
tikzset{
base/.style={draw, on chain, on grid, align=center, minimum height=4ex},
zbox/.style={base, rectangle, text width=8em},
ebox/.style={base, diamond, aspect=1.5, text width=10em},
term/.style={zbox, rounded corners},
norm/.style={->, draw},
coord/.style={coordinate, on chain, on grid, node distance=6mm and 25mm}}
node [zbox] (z1) {verb"R0 <- 30"};
node [above=0mm of z1, text width=8em] {\$Z_{1}\$};
node [ebox] (z2) {verb"R0 > 0"};
node [above=0mm of z2, text width=8em] {\$Z_{2}\$};
draw [->] (z1) -- (z2);
node [zbox, below=of z2.west, yshift=-4em] (z3) {verb"R1 <- R0 << 13"};
node [above=0mm of z3, text width=8em] {\$Z_{3}\$};
draw [->] (z2.west) -- (z3);
node [zbox] (z4) {verb"R2 <- R1 >> 12"};
node [above=0mm of z4, text width=8em] {\$Z_{4}\$};
draw [->] (z3) -- (z4);
node [zbox] (z5) {verb"R3 <- R2 or R1"};
node [above=0mm of z5, text width=8em] {\$Z_{5}\$};
draw [->] (z4) -- (z5);
draw [->] (z2.east) |- (z1);
end{tikzpicture}
end{center}
end{document}
documentclass{article}
usepackage[utf8]{inputenc}
usepackage{pgf, tikz}
usetikzlibrary{shapes, chains, calc, arrows, positioning}
begin{document}
begin{center}
begin{tikzpicture}[%
>=triangle 60,
start chain=going below,
node distance=6mm and 60mm,
every join/.style={norm},
]
tikzset{
base/.style={draw, on chain, on grid, align=center, minimum height=4ex},
zbox/.style={base, rectangle, text width=8em},
ebox/.style={base, diamond, aspect=1.5, text width=10em},
term/.style={zbox, rounded corners},
norm/.style={->, draw},
coord/.style={coordinate, on chain, on grid, node distance=6mm and 25mm}}
node [zbox] (z1) {verb"R0 <- 23"};
node [above=0mm of z1, text width=8em] {\$Z_{1}\$};
node [zbox] (z2) {verb"R1 <- R0 and R0"};
node [above=0mm of z2, text width=8em] {\$Z_{2}\$};
draw [->] (z1) -- (z2);
node [zbox] (z3) {verb"R2 <- R1 << 25"};
node [above=0mm of z3, text width=8em] {\$Z_{3}\$};
draw [->] (z2) -- (z3);
node [zbox] (z4) {verb"R3 <- R2 --"};
node [above=0mm of z4, text width=8em] {\$Z_{4}\$};
draw [->] (z3) -- (z4);
node [zbox] (z5) {verb"R4 <- R3 <| R1"};
node [above=0mm of z5, text width=8em] {\$Z_{5}\$};
draw [->] (z4) -- (z5);
node [zbox] (z6) {verb"R5 <- R4 <| 19"};
node [above=0mm of z6, text width=8em] {\$Z_{6}\$};
draw [->] (z5) -- (z6);
node [zbox] (z7) {verb"R6 <- R5 >> R1"};
node [above=0mm of z7, text width=8em] {\$Z_{7}\$};
draw [->] (z6) -- (z7);
node [ebox] (z8) {verb"R6 >= 18"};
node [above=0mm of z8, text width=8em] {\$Z_{8}\$};
draw [->] (z7) -- (z8);
node [zbox, below=of z8.west, yshift=-4em] (z9) {verb"R7 <- R6 <| R0"};
node [above=0mm of z9, text width=8em] {\$Z_{9}\$};
draw [->] (z8.west) -- (z9);
node [zbox] (z10) {verb"R8 <- R7 |> 20"};
node [above=0mm of z10, text width=8em] {\$Z_{10}\$};
draw [->] (z9) -- (z10);
draw [->] (z8.east) |- (z1);
end{tikzpicture}
end{center}
end{document}
documentclass{article}
usepackage[utf8]{inputenc}
usepackage{pgf, tikz}
usetikzlibrary{shapes, chains, calc, arrows, positioning}
begin{document}
begin{center}
begin{tikzpicture}[%
>=triangle 60,
start chain=going below,
node distance=6mm and 60mm,
every join/.style={norm},
]
tikzset{
base/.style={draw, on chain, on grid, align=center, minimum height=4ex},
zbox/.style={base, rectangle, text width=8em},
ebox/.style={base, diamond, aspect=1.5, text width=10em},
term/.style={zbox, rounded corners},
norm/.style={->, draw},
coord/.style={coordinate, on chain, on grid, node distance=6mm and 25mm}}
node [zbox] (z1) {verb"R0 <- 17"};
node [above=0mm of z1, text width=8em] {\$Z_{1}\$};
node [zbox] (z2) {verb"R1 <- R0 ++"};
node [above=0mm of z2, text width=8em] {\$Z_{2}\$};
draw [->] (z1) -- (z2);
node [zbox] (z3) {verb"R2 <- R1 and R0"};
node [above=0mm of z3, text width=8em] {\$Z_{3}\$};
draw [->] (z2) -- (z3);
node [zbox] (z4) {verb"R3 <- R2 << R0"};
node [above=0mm of z4, text width=8em] {\$Z_{4}\$};
draw [->] (z3) -- (z4);
node [zbox] (z5) {verb"R4 <- R3 not R0"};
node [above=0mm of z5, text width=8em] {\$Z_{5}\$};
draw [->] (z4) -- (z5);
node [zbox] (z6) {verb"R5 <- R4 + 26"};
node [above=0mm of z6, text width=8em] {\$Z_{6}\$};
draw [->] (z5) -- (z6);
node [zbox] (z7) {verb"R6 <- R5 --"};
node [above=0mm of z7, text width=8em] {\$Z_{7}\$};
draw [->] (z6) -- (z7);
node [ebox] (z8) {verb"R6 < 21"};
node [above=0mm of z8, text width=8em] {\$Z_{8}\$};
draw [->] (z7) -- (z8);
node [zbox, below=of z8.west, yshift=-4em] (z9) {verb"R7 <- R6 << R3"};
node [above=0mm of z9, text width=8em] {\$Z_{9}\$};
draw [->] (z8.west) -- (z9);
draw [->] (z8.east) |- (z1);
end{tikzpicture}
end{center}
end{document}
documentclass{article}
usepackage[utf8]{inputenc}
usepackage{pgf, tikz}
usetikzlibrary{shapes, chains, calc, arrows, positioning}
begin{document}
begin{center}
begin{tikzpicture}[%
>=triangle 60,
start chain=going below,
node distance=6mm and 60mm,
every join/.style={norm},
]
tikzset{
base/.style={draw, on chain, on grid, align=center, minimum height=4ex},
zbox/.style={base, rectangle, text width=8em},
ebox/.style={base, diamond, aspect=1.5, text width=10em},
term/.style={zbox, rounded corners},
norm/.style={->, draw},
coord/.style={coordinate, on chain, on grid, node distance=6mm and 25mm}}
node [zbox] (z1) {verb"R0 <- 17"};
node [above=0mm of z1, text width=8em] {\$Z_{1}\$};
node [ebox] (z2) {verb"R0 == 29"};
node [above=0mm of z2, text width=8em] {\$Z_{2}\$};
draw [->] (z1) -- (z2);
node [zbox, below=of z2.east, yshift=-4em] (z3) {verb"R1 <- R0 or 10"};
node [above=0mm of z3, text width=8em] {\$Z_{3}\$};
draw [->] (z2.east) -- (z3);
node [zbox] (z4) {verb"R2 <- R1 - 18"};
node [above=0mm of z4, text width=8em] {\$Z_{4}\$};
draw [->] (z3) -- (z4);
node [zbox] (z5) {verb"R3 <- R2 or R0"};
node [above=0mm of z5, text width=8em] {\$Z_{5}\$};
draw [->] (z4) -- (z5);
node [zbox] (z6) {verb"R4 <- R3 |> R1"};
node [above=0mm of z6, text width=8em] {\$Z_{6}\$};
draw [->] (z5) -- (z6);
node [ebox] (z7) {verb"R4 == 13"};
node [above=0mm of z7, text width=8em] {\$Z_{7}\$};
draw [->] (z6) -- (z7);
node [zbox, below=of z7.east, yshift=-4em] (z8) {verb"R5 <- R4 <| 30"};
node [above=0mm of z8, text width=8em] {\$Z_{8}\$};
draw [->] (z7.east) -- (z8);
draw [->] (z2.west) |- (z1);
draw [->] (z7.west) |- (z3);
end{tikzpicture}
end{center}
end{document}
documentclass{article}
usepackage[utf8]{inputenc}
usepackage{pgf, tikz}
usetikzlibrary{shapes, chains, calc, arrows, positioning}
begin{document}
begin{center}
begin{tikzpicture}[%
>=triangle 60,
start chain=going below,
node distance=6mm and 60mm,
every join/.style={norm},
]
tikzset{
base/.style={draw, on chain, on grid, align=center, minimum height=4ex},
zbox/.style={base, rectangle, text width=8em},
ebox/.style={base, diamond, aspect=1.5, text width=10em},
term/.style={zbox, rounded corners},
norm/.style={->, draw},
coord/.style={coordinate, on chain, on grid, node distance=6mm and 25mm}}
node [zbox] (z1) {verb"R0 <- 27"};
node [above=0mm of z1, text width=8em] {\$Z_{1}\$};
node [zbox] (z2) {verb"R1 <- R0 <| R0"};
node [above=0mm of z2, text width=8em] {\$Z_{2}\$};
draw [->] (z1) -- (z2);
node [zbox] (z3) {verb"R2 <- R1 ++"};
node [above=0mm of z3, text width=8em] {\$Z_{3}\$};
draw [->] (z2) -- (z3);
node [zbox] (z4) {verb"R3 <- R2 or 30"};
node [above=0mm of z4, text width=8em] {\$Z_{4}\$};
draw [->] (z3) -- (z4);
node [zbox] (z5) {verb"R4 <- R3 >> 23"};
node [above=0mm of z5, text width=8em] {\$Z_{5}\$};
draw [->] (z4) -- (z5);
node [zbox] (z6) {verb"R5 <- R4 xor 27"};
node [above=0mm of z6, text width=8em] {\$Z_{6}\$};
draw [->] (z5) -- (z6);
node [ebox] (z7) {verb"R5 <= 10"};
node [above=0mm of z7, text width=8em] {\$Z_{7}\$};
draw [->] (z6) -- (z7);
node [zbox, below=of z7.west, yshift=-4em] (z8) {verb"R6 <- R5 and 11"};
node [above=0mm of z8, text width=8em] {\$Z_{8}\$};
draw [->] (z7.west) -- (z8);
node [zbox] (z9) {verb"R7 <- R6 --"};
node [above=0mm of z9, text width=8em] {\$Z_{9}\$};
draw [->] (z8) -- (z9);
node [zbox] (z10) {verb"R8 <- R7 --"};
node [above=0mm of z10, text width=8em] {\$Z_{10}\$};
draw [->] (z9) -- (z10);
draw [->] (z7.east) |- (z1);
end{tikzpicture}
end{center}
end{document}
documentclass{article}
usepackage[utf8]{inputenc}
usepackage{pgf, tikz}
usetikzlibrary{shapes, chains, calc, arrows, positioning}
begin{document}
begin{center}
begin{tikzpicture}[%
>=triangle 60,
start chain=going below,
node distance=6mm and 60mm,
every join/.style={norm},
]
tikzset{
base/.style={draw, on chain, on grid, align=center, minimum height=4ex},
zbox/.style={base, rectangle, text width=8em},
ebox/.style={base, diamond, aspect=1.5, text width=10em},
term/.style={zbox, rounded corners},
norm/.style={->, draw},
coord/.style={coordinate, on chain, on grid, node distance=6mm and 25mm}}
node [zbox] (z1) {verb"R0 <- 1"};
node [above=0mm of z1, text width=8em] {\$Z_{1}\$};
node [zbox] (z2) {verb"R1 <- R0 --"};
node [above=0mm of z2, text width=8em] {\$Z_{2}\$};
draw [->] (z1) -- (z2);
node [ebox] (z3) {verb"R1 >= 17"};
node [above=0mm of z3, text width=8em] {\$Z_{3}\$};
draw [->] (z2) -- (z3);
node [zbox, below=of z3.east, yshift=-4em] (z4) {verb"R2 <- R1 or 0"};
node [above=0mm of z4, text width=8em] {\$Z_{4}\$};
draw [->] (z3.east) -- (z4);
node [zbox] (z5) {verb"R3 <- R2 <| R1"};
node [above=0mm of z5, text width=8em] {\$Z_{5}\$};
draw [->] (z4) -- (z5);
node [zbox] (z6) {verb"R4 <- R3 >> 16"};
node [above=0mm of z6, text width=8em] {\$Z_{6}\$};
draw [->] (z5) -- (z6);
node [ebox] (z7) {verb"R4 >= 11"};
node [above=0mm of z7, text width=8em] {\$Z_{7}\$};
draw [->] (z6) -- (z7);
node [zbox, below=of z7.west, yshift=-4em] (z8) {verb"R5 <- R4 ++"};
node [above=0mm of z8, text width=8em] {\$Z_{8}\$};
draw [->] (z7.west) -- (z8);
node [zbox] (z9) {verb"R6 <- R5 not R0"};
node [above=0mm of z9, text width=8em] {\$Z_{9}\$};
draw [->] (z8) -- (z9);
node [zbox] (z10) {verb"R7 <- R6 + R3"};
node [above=0mm of z10, text width=8em] {\$Z_{10}\$};
draw [->] (z9) -- (z10);
draw [->] (z3.west) |- (z1);
draw [->] (z7.east) |- (z4);
end{tikzpicture}
end{center}
end{document}