Machine virtuelle PHP
Les machines virtuelles sont également des ordinateurs En faisant référence à la conception de machines physiques, lors de la conception d'une machine virtuelle, vous devez d'abord. considérez trois éléments : Instructions, stockage de données, cadres de pile de fonctions ; opcodes et opérandes ;L'opcode spécifie le type d'opération de cette instruction, et l'opérande spécifie l'opérande lui-même ou l'adresse de l'opérande
Stockage de donnéesPHP virtuel ; la machine prend en charge plusieurs types de données : entier, virgule flottante, chaîne, tableau, objet, etc. ;
Cadre de pile de fonctionsLa machine virtuelle PHP implémente un cadre de pile de fonctions similaire à celle d'une structure de machine physique ;
Utilisez _zend_vm_stack pour représenter la structure de la pile ; utilisez le champ précédent entre plusieurs piles pour former une liste chaînée unidirectionnelle vers le bas et le haut de la pile ; , respectivement, et sont des pointeurs de type zval ;
Résumé
La machine virtuelle PHP est également un ordinateur. Il y a trois points sur lesquels nous devons nous concentrer : jeu d'instructions (y compris les fonctions de traitement des instructions), stockage de données (zval) et cadre de pile de fonctionsÀ ce stade, la machine virtuelle peut accepter des instructions et exécuter le code d'instruction Cependant, la machine virtuelle PHP est dédiée à l'exécution du code PHP. Comment convertir le code PHP en machine virtuelle PHP ? Qu'en est-il des instructions qui peuvent être reconnues - compiler ; fournit également un compilateur, qui peut convertir le code PHP en un ensemble d'instructions pouvant être reconnues ;
Théorie Vous pouvez personnaliser n'importe quel langage tant que vous implémentez un compilateur capable de convertir votre propre langage. en codes d'instructions que PHP peut reconnaître, il peut être exécuté par la machine virtuelle PHP ;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!