codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
/* **------------------------------------------------------------------- ** ** Exemplo Opcode Multiplicacao: ** **------------------------------------------------------------------- */ #include <stdio.h> #define STACK_SIZE 1024 typedef union VALUE VALUE; union VALUE { long l; float f; char *s; void *p; }; VALUE stack[STACK_SIZE]; // a pilha BASE VALUE *sp; // O TOPO da pilha void push_long (long value) { sp++; sp[0].l = value; } void opcode_multiplica (void) { // aqui EH NECESSARIO que existam 2 valores na pilha ( stack ) // // ENTAO: // // Multiplica o primeiro valor passado para a pilha ( push_long() ) pelo segundo // valor passado para a pilha ( push_long() ). // sp[-1].l *= sp[0].l; // e da um "POP" na pilha ... neste ponto o valor multiplicado fica no // TOPO DA PILHA. sp--; } int main () { sp = stack; // passando 2 valores na "pilha" ( stack ); // push_long (1000); push_long (10); opcode_multiplica (); // aqui EH NECESSARIO um "POP" para estabilizar sp ... // ... printf ("*sp = %ld\n", sp->l); // imprime: 10.000 return 0; }
Private
[
?
]
Run code
Submit