Skocz do zawartości

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

Elzulninho

Wyjaśnienie if - assembler/c

Rekomendowane odpowiedzi

Cześć umiałby ktoś wyjaśnić jak zostały tu zaimplementowane ify/ jak to działa? Widzę, że jest tu tworzenie nowej labelki , jakieś rzutowanie , wykonywanie skoku itp ale jak to logicznie wytłumaczyć co się stanie jeśli then co jeśli else itp

IF expression {
string elseLabel = createNewLabel();

Value *exp = dynamic_cast<Value*>(symtable[$2]);

out.byScope(symTableGetScope()) << "	je"
	<< exp->getOpSuffix()
	<< "\t" << exp->code(false)//e
	<< ",#0,#" << elseLabel << endl;

	$<sval>$ = strdup(elseLabel.c_str());
} THEN statement {
string endLabel = createNewLabel(); 

out.byScope(symTableGetScope())
	<< "	jump.i	#" << endLabel << endl 
	<< string($<sval>3) << ":\n";

$<sval>$ = strdup(endLabel.c_str());
} ELSE statement {
out.byScope(symTableGetScope())
	<< $<sval>6 << ":\n";

free($<sval>3);
free($<sval>6);
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...