Βρόχοι και αποφάσεις

Ο κώδικας για του βρόχους και τις αποφάσεις βασίζεται σε άλματα σε συγκεκριμένες ετικέτες. Τη δημιουργία του κώδικα διευκολύνει η υλοποίηση συνάρτησης new_label που επιστρέφει νέα ονόματα ετικετών (πιθανώς με τη χρήση των συναρτήσεων sprintf και malloc για την αποθήκευση του αποτελέσματος). Έτσι για παράδειγμα ο κώδικας για την εντολή while μπορεί να είναι της μορφής:
void
codegen_while(struct s_tree *expr, struct s_tree *stmt)
{
        char *loop = new_label();
        char *end = new_label();

        printf("%s:\n", loop);
        codegen(expr);
        printf("\tpop %%eax\n");
        printf("\tcmp %%eax, 0\n");
        printf("\tje %s\n", end);
        codegen(stmt);
        printf("\tjmp %s\n", loop);
        printf("%s:\n", end);
}
για να παράγει κώδικα όπως τον παρακάτω:
.L0053:
        pushl a
        pop %eax
        cmp %eax0
        je .L0054
        // code for the loop body
        jmp .L0053
.L0054: