<div dir="ltr">Pentru toate apelurile de funcție se creează un nod de tipul CplCall în graf.<br>Pattern-urile pentru acest nod sunt adăugate; în urma lor veți obține o instrucțiune BLI (dacă se sare la un label) sau o pseudo-instrucțiune CALLR (Call Register).<br><br>În C, apelurile de funcții directe apar când se apelează o funcție folosind numele acesteia.<br>Apelurile indirecte apar când folosim pointeri către funcții.<br><br>ISA-ul nu conține o instrucțiune, de tip call, care să sară la o adresă aflată intr-un registru și care să seteze LR-ul.<br>Pseudo-instrucțiunea CALR modelează această funcționalitate in timpul generării de cod.<br><br>Pentru prima parte a task-ului 5, puteți pune un assert că operandul 0 este registru.<br><br>Spor<br>Alex<br><br></div><div class="gmail_extra"><br><div class="gmail_quote">2015-12-30 20:18 GMT+02:00 Georgiana Diana via cpl <span dir="ltr"><<a href="mailto:cpl@cursuri.cs.pub.ro" target="_blank">cpl@cursuri.cs.pub.ro</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Actually, in CplPatterns.td vad ca doar cu registru se apeleaza CALLR :D<div><br></div><div> def : Pat<(CplCall IntRegs:$ra), (CALLR IntRegs:$ra)>;</div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">2015-12-30 20:02 GMT+02:00 Georgiana Diana <span dir="ltr"><<a href="mailto:geodiana93@gmail.com" target="_blank">geodiana93@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Buna,<div>In task-ul 5 scrie asa:</div><div><br></div><div>"<span style="color:rgb(51,51,51);font-family:Verdana,'Lucida Grande',Lucida,Helvetica,Arial,sans-serif;font-size:13px;line-height:19.5px;text-align:justify">Pentru apeluri de funcție indirecte (cu adresa funcției într-un registru) ..."</span></div><div><div style="text-align:justify"><font color="#333333" face="Verdana, Lucida Grande, Lucida, Helvetica, Arial, sans-serif"><span style="line-height:19.5px"><br></span></font></div><div style="text-align:justify"><font color="#333333" face="Verdana, Lucida Grande, Lucida, Helvetica, Arial, sans-serif"><span style="line-height:19.5px">Apelurile de functii pot fi si directe, cu adresa printr-un operand imediat ? Cu alte cuvinte, pentru CALLR, ar trebui sa consideram eroare daca operandul de pe pozitia 0 nu este registru ?</span></font></div><span><font color="#888888"><div style="text-align:justify"><font color="#333333" face="Verdana, Lucida Grande, Lucida, Helvetica, Arial, sans-serif"><span style="line-height:19.5px"><br></span></font></div><div style="text-align:justify"><font color="#333333" face="Verdana, Lucida Grande, Lucida, Helvetica, Arial, sans-serif"><span style="line-height:19.5px">Georgiana</span></font></div><div><br></div>-- <br><div><div dir="ltr"><font color="#0000ff"><b>Georgiana Diana Ciocirdel</b></font><div>Polytechnic University of Bucharest,</div><div>Computer Science</div></div></div>
</font></span></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div><div dir="ltr"><font color="#0000ff"><b>Georgiana Diana Ciocirdel</b></font><div>Polytechnic University of Bucharest,</div><div>Computer Science</div></div></div>
</div>
</div></div><br>_______________________________________________<br>
cpl mailing list<br>
<a href="mailto:cpl@cursuri.cs.pub.ro">cpl@cursuri.cs.pub.ro</a><br>
<a href="http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/cpl" rel="noreferrer" target="_blank">http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/cpl</a><br>
<br></blockquote></div><br></div>