<br><br><div class="gmail_quote">On Mon, Apr 18, 2011 at 4:13 AM, Eliot Miranda <span dir="ltr"><<a href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br><br><br><div class="gmail_quote">On Sun, Apr 17, 2011 at 5:03 PM, Mariano Martinez Peck <span dir="ltr"><<a href="mailto:marianopeck@gmail.com" target="_blank">marianopeck@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br><br><br><div class="gmail_quote">On Sun, Apr 17, 2011 at 3:24 AM, Eliot Miranda <span dir="ltr"><<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br><br><br><div class="gmail_quote">On Sat, Apr 16, 2011 at 4:50 PM, Mariano Martinez Peck <span dir="ltr"><<a href="mailto:marianopeck@gmail.com" target="_blank">marianopeck@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>Hi Eliot. For learning purposes, I would LOVE to be able to do something like: <br><br><br>(StackInterpreter >> #lookupMethodInClass:) simulatedMachineCode<br></blockquote><div><br></div><div>Its easy to add a primitive to get the code. What's problematic is decorating that code. Decorating it involves knowing the names for the variables whose addresses appear in the machine code, and that's tedious to write. The best way I know of getting the code right now is to use the VMMaker and Bochs plugin and the interface that allows one to supply a method in the current image to the simulator and have it translate it as if it were in the image being simulated (if that makes sense). The VMMaker/Bochs plugin pair decorates the code beautifully. e.g.</div>
<div><br></div><div>Cogit chooseCogitClass genAndDis: (Point >> #setX:setY:)</div><div><br></div></div></blockquote><div><br>Hi Eliot. I don't pretend the decorating. A minimal, approximated representation is more than enough. <br>
I tried but first error was because #primitiveErrorTable is not implemented in SmalltalkImage and:<br><br><br>CurrentImageCoInterpreterFacade >> initializeObjectMap<br> objectMap := IdentityDictionary new.<br> { nil. false. true. Smalltalk primitiveErrorTable. Float } do:<br>
[:o| self oopForObject: o]<br><br> <br>So...I implemented. But then there where several erros because "memory" was a ByteArray and not a Bitmap, and several messages were implemented in BitMap, like #unsignedLongAt: #unsignedByteAt:, etc. <br>
<br>I tried with latest code commited.<br></div></div></blockquote><div><br></div><div>OK. Give me a few days. I need to track down the relevant extensions I have in my base image. Sorry.</div><div><br></div></div></blockquote>
<div><br>Yes, I imagined that. No problem. When you publish, I test, just let me know. The browser is almost ready ;)<br>Thanks in advance,<br><br>Mariano<br><br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="gmail_quote"><div></div><div>best,</div>
<div>Eliot</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div><br>Thanks in advance<br><br>Mariano<br><br><br></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
<div class="gmail_quote"><div></div><div>generates the following if you choose SimpleStackBasedCogit:</div><div><div><br></div><div><span style="white-space:pre-wrap">                </span>E68</div>
<div><span style="white-space:pre-wrap">                        </span>objhdr: 1003</div><div><span style="white-space:pre-wrap">                        </span>nArgs: 2<span style="white-space:pre-wrap">        </span>type: 2</div>
<div><span style="white-space:pre-wrap">                        </span>blksiz: C0</div><div><span style="white-space:pre-wrap">                        </span>method: 100040</div><div><span style="white-space:pre-wrap">                        </span>mthhdr: 4100801</div>
<div><span style="white-space:pre-wrap">                        </span>selctr: 100048=setX:setY:</div><div><span style="white-space:pre-wrap">                        </span>blkentry: 0</div><div><span style="white-space:pre-wrap">                        </span>stackCheckOffset: 53/EBB</div>
<div><span style="white-space:pre-wrap">                </span>00000e80: xorl %edx, %edx : 31 D2 </div><div><span style="white-space:pre-wrap">                </span>00000e82: call .+0xfffffb61 (0x000009e8=ceMethodAbort) : E8 61 FB FF FF </div>
<div><span style="white-space:pre-wrap">                </span>00000e87: nop : 90 </div><div><span style="white-space:pre-wrap">                </span>entry:</div><div><span style="white-space:pre-wrap">                </span>00000e88: movl %edx, %eax : 89 D0 </div>
<div><span style="white-space:pre-wrap">                </span>00000e8a: andl $0x00000001, %eax : 83 E0 01 </div><div><span style="white-space:pre-wrap">                </span>00000e8d: jnz .+0x00000010 (0x00000e9f=setX:setY:@37) : 75 10 </div>
<div><span style="white-space:pre-wrap">                </span>00000e8f: movl %ds:(%edx), %eax : 8B 02 </div><div><span style="white-space:pre-wrap">                </span>00000e91: shrl $0x0a, %eax : C1 E8 0A </div>
<div><span style="white-space:pre-wrap">                </span>00000e94: andl $0x0000007c, %eax : 83 E0 7C </div><div><span style="white-space:pre-wrap">                </span>00000e97: jnz .+0x00000006 (0x00000e9f=setX:setY:@37) : 75 06 </div>
<div><span style="white-space:pre-wrap">                </span>00000e99: movl %ds:0xfffffffc(%edx), %eax : 8B 42 FC </div><div><span style="white-space:pre-wrap">                </span>00000e9c: andl $0xfffffffc, %eax : 83 E0 FC </div>
<div><span style="white-space:pre-wrap">                </span>00000e9f: cmpl %ecx, %eax : 39 C8 </div><div><span style="white-space:pre-wrap">                </span>00000ea1: jnz .+0xffffffdf (0x00000e82=setX:setY:@1A) : 75 DF </div>
<div><span style="white-space:pre-wrap">                </span>noCheckEntry:</div><div><span style="white-space:pre-wrap">                </span>00000ea3: pushl %ebp : 55 </div><div><span style="white-space:pre-wrap">                </span>00000ea4: movl %esp, %ebp : 89 E5 </div>
<div><span style="white-space:pre-wrap">                </span>00000ea6: pushl $0x00000e68=setX:setY:@0 : 68 68 0E 00 00 </div><div><span style="white-space:pre-wrap">                </span>IsAbsPCReference:</div>
<div><span style="white-space:pre-wrap">                </span>00000eab: movl $0x00100000=nil, %ebx : BB 00 00 10 00 </div><div><span style="white-space:pre-wrap">                </span>00000eb0: pushl %ebx : 53 </div>
<div><span style="white-space:pre-wrap">                </span>00000eb1: pushl %edx : 52 </div><div><span style="white-space:pre-wrap">                </span>00000eb2: movl %ds:0x20000=stackLimit, %eax : A1 00 00 02 00 </div>
<div><span style="white-space:pre-wrap">                </span>00000eb7: cmpl %eax, %esp : 39 C4 </div><div><span style="white-space:pre-wrap">                </span>00000eb9: jb .+0xffffffc5 (0x00000e80=setX:setY:@18) : 72 C5 </div>
<div><span style="white-space:pre-wrap">                </span>HasBytecodePC:</div><div><span style="white-space:pre-wrap">                </span>00000ebb: movl 12(%ebp), %eax : 8B 45 0C </div><div><span style="white-space:pre-wrap">                </span>00000ebe: pushl %eax : 50 </div>
<div><span style="white-space:pre-wrap">                </span>00000ebf: movl -12(%ebp), %edx : 8B 55 F4 </div><div><span style="white-space:pre-wrap">                </span>00000ec2: popl %ecx : 59 </div><div><span style="white-space:pre-wrap">                </span>00000ec3: movl %ecx, %ds:0x4(%edx) : 89 4A 04 </div>
<div><span style="white-space:pre-wrap">                </span>00000ec6: movl %ecx, %eax : 89 C8 </div><div><span style="white-space:pre-wrap">                </span>00000ec8: andl $0x00000001, %eax : 83 E0 01 </div>
<div><span style="white-space:pre-wrap">                </span>00000ecb: jnz .+0x0000001a (0x00000ee7=setX:setY:@7F) : 75 1A </div><div><span style="white-space:pre-wrap">                </span>00000ecd: movl %ds:0x4e5e400, %eax : A1 00 E4 E5 04 </div>
<div><span style="white-space:pre-wrap">                </span>00000ed2: cmpl %eax, %edx : 39 C2 </div><div><span style="white-space:pre-wrap">                </span>00000ed4: jnb .+0x00000011 (0x00000ee7=setX:setY:@7F) : 73 11 </div>
<div><span style="white-space:pre-wrap">                </span>00000ed6: cmpl %eax, %ecx : 39 C1 </div><div><span style="white-space:pre-wrap">                </span>00000ed8: jb .+0x0000000d (0x00000ee7=setX:setY:@7F) : 72 0D </div>
<div><span style="white-space:pre-wrap">                </span>00000eda: movb %ds:0x3(%edx), %al : 8A 42 03 </div><div><span style="white-space:pre-wrap">                </span>00000edd: andl $0x00000040, %eax : 83 E0 40 </div>
<div><span style="white-space:pre-wrap">                </span>00000ee0: jnz .+0x00000005 (0x00000ee7=setX:setY:@7F) : 75 05 </div><div><span style="white-space:pre-wrap">                </span>00000ee2: call .+0xfffffda1 (0x00000c88=ceStoreCheckTrampoline) : E8 A1 FD FF FF </div>
<div><span style="white-space:pre-wrap">                </span>IsRelativeCall:</div><div><span style="white-space:pre-wrap">                </span>00000ee7: movl 8(%ebp), %eax : 8B 45 08 </div><div><span style="white-space:pre-wrap">                </span>00000eea: pushl %eax : 50 </div>
<div><span style="white-space:pre-wrap">                </span>00000eeb: movl -12(%ebp), %edx : 8B 55 F4 </div><div><span style="white-space:pre-wrap">                </span>00000eee: popl %ecx : 59 </div><div><span style="white-space:pre-wrap">                </span>00000eef: movl %ecx, %ds:0x8(%edx) : 89 4A 08 </div>
<div><span style="white-space:pre-wrap">                </span>00000ef2: movl %ecx, %eax : 89 C8 </div><div><span style="white-space:pre-wrap">                </span>00000ef4: andl $0x00000001, %eax : 83 E0 01 </div>
<div><span style="white-space:pre-wrap">                </span>00000ef7: jnz .+0x0000001a (0x00000f13=setX:setY:@AB) : 75 1A </div><div><span style="white-space:pre-wrap">                </span>00000ef9: movl %ds:0x4e5e400, %eax : A1 00 E4 E5 04 </div>
<div><span style="white-space:pre-wrap">                </span>00000efe: cmpl %eax, %edx : 39 C2 </div><div><span style="white-space:pre-wrap">                </span>00000f00: jnb .+0x00000011 (0x00000f13=setX:setY:@AB) : 73 11 </div>
<div><span style="white-space:pre-wrap">                </span>00000f02: cmpl %eax, %ecx : 39 C1 </div><div><span style="white-space:pre-wrap">                </span>00000f04: jb .+0x0000000d (0x00000f13=setX:setY:@AB) : 72 0D </div>
<div><span style="white-space:pre-wrap">                </span>00000f06: movb %ds:0x3(%edx), %al : 8A 42 03 </div><div><span style="white-space:pre-wrap">                </span>00000f09: andl $0x00000040, %eax : 83 E0 40 </div>
<div><span style="white-space:pre-wrap">                </span>00000f0c: jnz .+0x00000005 (0x00000f13=setX:setY:@AB) : 75 05 </div><div><span style="white-space:pre-wrap">                </span>00000f0e: call .+0xfffffd75 (0x00000c88=ceStoreCheckTrampoline) : E8 75 FD FF FF </div>
<div><span style="white-space:pre-wrap">                </span>IsRelativeCall:</div><div><span style="white-space:pre-wrap">                </span>00000f13: movl -12(%ebp), %edx : 8B 55 F4 </div><div><span style="white-space:pre-wrap">                </span>00000f16: movl %ebp, %esp : 89 EC </div>
<div><span style="white-space:pre-wrap">                </span>00000f18: popl %ebp : 5D </div><div><span style="white-space:pre-wrap">                </span>00000f19: ret $0x000c : C2 0C 00 </div><div><span style="white-space:pre-wrap">                </span>00000f1c: nop : 90 </div>
<div><span style="white-space:pre-wrap">                </span>00000f1d: nop : 90 </div><div><span style="white-space:pre-wrap">                </span>00000f1e: nop : 90 </div><div><span style="white-space:pre-wrap">                </span>00000f1f: nop : 90 </div>
<div><span style="white-space:pre-wrap">                </span>00000f20: nop : 90 </div><div><span style="white-space:pre-wrap">                </span>startpc: 12</div><div><span style="white-space:pre-wrap">                </span> 16rEAB IsAbsPCReference (16rF27)</div>
<div><span style="white-space:pre-wrap">                </span> 16rEBB HasBytecodePC (16rF26, bc: 12)</div><div><span style="white-space:pre-wrap">                </span> 16rEE7 IsRelativeCall (16rF24)</div>
<div><span style="white-space:pre-wrap">                </span> 16rF13 IsRelativeCall (16rF22)</div></div><div><br></div><div>and the following if you choose StackToRegisterMappingCogit:</div><div><br></div><div>
<div><br></div><div><span style="white-space:pre-wrap">                </span>1128</div><div><span style="white-space:pre-wrap">                        </span>objhdr: 1003</div><div><span style="white-space:pre-wrap">                        </span>nArgs: 2<span style="white-space:pre-wrap">        </span>type: 2</div>
<div><span style="white-space:pre-wrap">                        </span>blksiz: B8</div><div><span style="white-space:pre-wrap">                        </span>method: 100040</div><div><span style="white-space:pre-wrap">                        </span>mthhdr: 4100801</div>
<div><span style="white-space:pre-wrap">                        </span>selctr: 100048=setX:setY:</div><div><span style="white-space:pre-wrap">                        </span>blkentry: 0</div><div><span style="white-space:pre-wrap">                        </span>stackCheckOffset: 53/117B</div>
<div><span style="white-space:pre-wrap">                </span>00001140: xorl %edx, %edx : 31 D2 </div><div><span style="white-space:pre-wrap">                </span>00001142: call .+0xfffff9b1 (0x00000af8=ceMethodAbortNArgs) : E8 B1 F9 FF FF </div>
<div><span style="white-space:pre-wrap">                </span>00001147: nop : 90 </div><div><span style="white-space:pre-wrap">                </span>entry:</div><div><span style="white-space:pre-wrap">                </span>00001148: movl %edx, %eax : 89 D0 </div>
<div><span style="white-space:pre-wrap">                </span>0000114a: andl $0x00000001, %eax : 83 E0 01 </div><div><span style="white-space:pre-wrap">                </span>0000114d: jnz .+0x00000010 (0x0000115f=setX:setY:@37) : 75 10 </div>
<div><span style="white-space:pre-wrap">                </span>0000114f: movl %ds:(%edx), %eax : 8B 02 </div><div><span style="white-space:pre-wrap">                </span>00001151: shrl $0x0a, %eax : C1 E8 0A </div>
<div><span style="white-space:pre-wrap">                </span>00001154: andl $0x0000007c, %eax : 83 E0 7C </div><div><span style="white-space:pre-wrap">                </span>00001157: jnz .+0x00000006 (0x0000115f=setX:setY:@37) : 75 06 </div>
<div><span style="white-space:pre-wrap">                </span>00001159: movl %ds:0xfffffffc(%edx), %eax : 8B 42 FC </div><div><span style="white-space:pre-wrap">                </span>0000115c: andl $0xfffffffc, %eax : 83 E0 FC </div>
<div><span style="white-space:pre-wrap">                </span>0000115f: cmpl %ecx, %eax : 39 C8 </div><div><span style="white-space:pre-wrap">                </span>00001161: jnz .+0xffffffdf (0x00001142=setX:setY:@1A) : 75 DF </div>
<div><span style="white-space:pre-wrap">                </span>noCheckEntry:</div><div><span style="white-space:pre-wrap">                </span>00001163: pushl %ebp : 55 </div><div><span style="white-space:pre-wrap">                </span>00001164: movl %esp, %ebp : 89 E5 </div>
<div><span style="white-space:pre-wrap">                </span>00001166: pushl $0x00001128=setX:setY:@0 : <a href="tel:68%2028%2011%2000%2000" value="+16828110000" target="_blank">68 28 11 00 00</a> </div><div><span style="white-space:pre-wrap">                </span>IsAbsPCReference:</div>
<div><span style="white-space:pre-wrap">                </span>0000116b: movl $0x00100000=nil, %ebx : BB 00 00 10 00 </div><div><span style="white-space:pre-wrap">                </span>00001170: pushl %ebx : 53 </div>
<div><span style="white-space:pre-wrap">                </span>00001171: pushl %edx : 52 </div><div><span style="white-space:pre-wrap">                </span>00001172: movl %ds:0x20000=stackLimit, %eax : A1 00 00 02 00 </div>
<div><span style="white-space:pre-wrap">                </span>00001177: cmpl %eax, %esp : 39 C4 </div><div><span style="white-space:pre-wrap">                </span>00001179: jb .+0xffffffc5 (0x00001140=setX:setY:@18) : 72 C5 </div>
<div><span style="white-space:pre-wrap">                </span>HasBytecodePC:</div><div><span style="white-space:pre-wrap">                </span>0000117b: movl 12(%ebp), %ecx : 8B 4D 0C </div><div><span style="white-space:pre-wrap">                </span>0000117e: movl -12(%ebp), %edx : 8B 55 F4 </div>
<div><span style="white-space:pre-wrap">                </span>00001181: movl %ecx, %ds:0x4(%edx) : 89 4A 04 </div><div><span style="white-space:pre-wrap">                </span>00001184: movl %ecx, %eax : 89 C8 </div>
<div><span style="white-space:pre-wrap">                </span>00001186: andl $0x00000001, %eax : 83 E0 01 </div><div><span style="white-space:pre-wrap">                </span>00001189: jnz .+0x0000001a (0x000011a5=setX:setY:@7D) : 75 1A </div>
<div><span style="white-space:pre-wrap">                </span>0000118b: movl %ds:0x4e5e400, %eax : A1 00 E4 E5 04 </div><div><span style="white-space:pre-wrap">                </span>00001190: cmpl %eax, %edx : 39 C2 </div>
<div><span style="white-space:pre-wrap">                </span>00001192: jnb .+0x00000011 (0x000011a5=setX:setY:@7D) : 73 11 </div><div><span style="white-space:pre-wrap">                </span>00001194: cmpl %eax, %ecx : 39 C1 </div>
<div><span style="white-space:pre-wrap">                </span>00001196: jb .+0x0000000d (0x000011a5=setX:setY:@7D) : 72 0D </div><div><span style="white-space:pre-wrap">                </span>00001198: movb %ds:0x3(%edx), %al : 8A 42 03 </div>
<div><span style="white-space:pre-wrap">                </span>0000119b: andl $0x00000040, %eax : 83 E0 40 </div><div><span style="white-space:pre-wrap">                </span>0000119e: jnz .+0x00000005 (0x000011a5=setX:setY:@7D) : 75 05 </div>
<div><span style="white-space:pre-wrap">                </span>000011a0: call .+0xfffffd53 (0x00000ef8=ceStoreCheckTrampoline) : E8 53 FD FF FF </div><div><span style="white-space:pre-wrap">                </span>IsRelativeCall:</div>
<div><span style="white-space:pre-wrap">                </span>000011a5: movl 8(%ebp), %ecx : 8B 4D 08 </div><div><span style="white-space:pre-wrap">                </span>000011a8: movl %ecx, %ds:0x8(%edx) : 89 4A 08 </div>
<div><span style="white-space:pre-wrap">                </span>000011ab: movl %ecx, %eax : 89 C8 </div><div><span style="white-space:pre-wrap">                </span>000011ad: andl $0x00000001, %eax : 83 E0 01 </div>
<div><span style="white-space:pre-wrap">                </span>000011b0: jnz .+0x0000001a (0x000011cc=setX:setY:@A4) : 75 1A </div><div><span style="white-space:pre-wrap">                </span>000011b2: movl %ds:0x4e5e400, %eax : A1 00 E4 E5 04 </div>
<div><span style="white-space:pre-wrap">                </span>000011b7: cmpl %eax, %edx : 39 C2 </div><div><span style="white-space:pre-wrap">                </span>000011b9: jnb .+0x00000011 (0x000011cc=setX:setY:@A4) : 73 11 </div>
<div><span style="white-space:pre-wrap">                </span>000011bb: cmpl %eax, %ecx : 39 C1 </div><div><span style="white-space:pre-wrap">                </span>000011bd: jb .+0x0000000d (0x000011cc=setX:setY:@A4) : 72 0D </div>
<div><span style="white-space:pre-wrap">                </span>000011bf: movb %ds:0x3(%edx), %al : 8A 42 03 </div><div><span style="white-space:pre-wrap">                </span>000011c2: andl $0x00000040, %eax : 83 E0 40 </div>
<div><span style="white-space:pre-wrap">                </span>000011c5: jnz .+0x00000005 (0x000011cc=setX:setY:@A4) : 75 05 </div><div><span style="white-space:pre-wrap">                </span>000011c7: call .+0xfffffd2c (0x00000ef8=ceStoreCheckTrampoline) : E8 2C FD FF FF </div>
<div><span style="white-space:pre-wrap">                </span>IsRelativeCall:</div><div><span style="white-space:pre-wrap">                </span>000011cc: movl -12(%ebp), %edx : 8B 55 F4 </div><div><span style="white-space:pre-wrap">                </span>000011cf: movl %ebp, %esp : 89 EC </div>
<div><span style="white-space:pre-wrap">                </span>000011d1: popl %ebp : 5D </div><div><span style="white-space:pre-wrap">                </span>000011d2: ret $0x000c : C2 0C 00 </div><div><span style="white-space:pre-wrap">                </span>000011d5: nop : 90 </div>
<div><span style="white-space:pre-wrap">                </span>000011d6: nop : 90 </div><div><span style="white-space:pre-wrap">                </span>000011d7: nop : 90 </div><div><span style="white-space:pre-wrap">                </span>000011d8: nop : 90 </div>
<div><span style="white-space:pre-wrap">                </span>startpc: 12</div><div><span style="white-space:pre-wrap">                </span> 16r116B IsAbsPCReference (16r11DF)</div><div><span style="white-space:pre-wrap">                </span> 16r117B HasBytecodePC (16r11DE, bc: 12)</div>
<div><span style="white-space:pre-wrap">                </span> 16r11A5 IsRelativeCall (16r11DC)</div><div><span style="white-space:pre-wrap">                </span> 16r11CC IsRelativeCall (16r11DA)</div>
</div><div><br></div><div>(spot the difference?)</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>and that answers a possible machine code for that compiled method ? is that possible ? Sorry for my ignorance if this is absurd.<br>
</blockquote><div><br></div><div>Far from it.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>if you provide me such method I plan to build a little browser on top of that. <br></blockquote><div><br></div><div>Go for it.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>Thanks<br clear="all"><br>-- <br>Mariano<br><a href="http://marianopeck.wordpress.com" target="_blank">http://marianopeck.wordpress.com</a><br>
<br>
<br></blockquote></div><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Mariano<br><a href="http://marianopeck.wordpress.com" target="_blank">http://marianopeck.wordpress.com</a><br><br>
<br></blockquote></div><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Mariano<br><a href="http://marianopeck.wordpress.com" target="_blank">http://marianopeck.wordpress.com</a><br><br>