Es un valor que se expresa a s mismo en lugar de a un

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: evaluar las restricciones que existen así como qué valores puede tomar y qué operaciones se pueden realizar. 7 CONSTANTES Y LITERALES ¢༊  Un literal es es la representación explícita de los valores que pueden tomar los tipos de datos básicos. Es un valor que se expresa a sí mismo, en lugar de a un valor variable o el resultado de una expresión. —༉  Ejemplo: el número 3 o la cadena “Hola”. ¢༊  Una constante es un nombre descriptivo que sustituye a un literal y retiene este mismo valor a lo largo del programa, lo que se opone a una variable cuyo valor puede cambiar. Al declarar una constante, se puede asignar un nombre significativo a un valor. Una vez que se declara una constante, no se puede modificar ni se le puede asignar un nuevo valor. —༉  Ejemplo: mi_entero=3 8 OPERACIONES ARITMÉTICAS ¢༊  Instrucciones Format addl subl imull sall sarl shrl xorl andl orl de dos operandos: Cálculo Src,Dest Src,Dest Src,Dest Src,Dest Src,Dest Src,Dest Src,Dest Src,Dest Src,Dest Dest Dest Dest Dest Dest Dest Dest Dest Dest = = = = = = = = = Dest Dest Dest Dest Dest Dest Dest Dest Dest + Src - Src * Src << Src También llamado shll >> Src Aritmé;ca >> Src Lógica ^ Src & Src | Src ¢༊  Cuidado con el orden de los operandos! ¢  No se distingue entre sin signo y con signo (¿por qué?) 9 OPERACIONES ARITMÉTICAS ¢༊  Instrucciones incl decl negl notl ¢༊  Buscar Dest Dest Dest Dest de un operando Dest = Dest + 1 Dest = Dest - 1 Dest = - Dest Dest = ~Dest en el libro otras operaciones 10 EJEMPLO: EXPRESIONES ARITMÉTICAS arith: pushl %ebp %esp, %ebp int arith(int x, int y, int z) movl { movl 8(%ebp), %ecx int t1 = x+y; movl 12(%ebp), %edx int t2 = z+t1; leal (%edx,%edx,2), %eax int t3 = x+4; int t4 = y * 48; sall $4, %eax leal 4(%ecx,%eax), %eax int t5 = t3 + t4; addl %ecx, %edx int rval = t2 * t5; return rval; addl 16(%ebp), %edx imull %edx, %eax } popl ret %ebp Set Up Body Finish 11 ENTENDIENDO EL EJEMPLO int arith(int x, int y, int z) { int t1 = x+y; int t2 = z+t1; int t3 = x+4; int t4 = y * 48; int t5 = t3 + t4; int rval = t2 * t5; return rval; } movl movl leal sall leal addl addl imull 8(%ebp), %ecx 12(%ebp), %edx (%edx,%edx,2), %eax $4, %eax 4(%ecx,%eax), %eax %ecx, %edx 16(%ebp), %edx %edx, %eax • Stack • Offset • 16 z 12 y 8 x 4 Rtn Addr 0 Old %ebp %ebp 12 ENTENDIENDO EL EJEMPLO • • int arith(int x, int y, int z) { int t1 = x+y; int t2 = z+t1; int t3 = x+4; int t4 = y * 48; int t5 = t3 + t4; int rval = t2 * t5; return rval; } movl movl leal sall leal addl addl imull 8(%ebp), %ecx 12(%ebp), %edx (%edx,%edx,2), %eax $4, %eax 4(%ecx,%eax), %eax %ecx, %edx 16(%ebp), %edx %edx, %eax # # # # # # # # Stack Offset 16 z 12 y 8 x 4 Rtn Addr 0 ecx edx eax eax eax edx edx eax • Old %ebp =x =y = y*3 *= 16 (t4) = t4 +x+4 (t5) = x+y (t1) += z (t2) = t2 * t5 (rval) %ebp 13 OBSERVACIONES int arith(int x, int y, int z) { int t1 = x+y; int t2 = z+t1; int t3 = x+4; int t4 = y * 48; int t5 = t3 + t4; int rval = t2 * t5; return rval; } movl movl leal sall leal addl addl imull 8(%ebp), %ecx 12(%ebp), %edx (%e...
View Full Document

This document was uploaded on 04/05/2014.

Ask a homework question - tutors are online