PHP gevorderde |
|
Een programmeertaal of scripttaal wordt gemaakt in een low-level taal. In de meeste gevallen is dit Assembly of ML(Machine Language). Het kan ook C of C++ zijn. Wat eist nou het maken van zo'n taal? Je moet kunnen denken als een machine en als een mens. Kan je dit niet dan krijg je het nooit voor elkaar. Hoe denk je als een machine? Daarvoor zou ik maar eens Assembly moeten leren. C/C++ zijn talen met syntax die steunen op het menselijk geheugen. De taal is zo ontwikkeld dat je gaat denken als een mens wanneer je iets programmeert. Bij Assembly of ML is dit niet zo. Waarom niet? ML kan niet echt veranderd worden omdat deze te laag qua level is. ASM is gebaseerd op ML en heeft dus hetzelfde systeem. De talen werken met bepaalde instructies. Zoals mov, jmp, jne, je, int, etc. Deze worden omgezet tijdens het Assembleren naar ML. Wanneer zo'n geassembleerde code wordt uitgevoerd dan worden de instructies verzonden naar de processor. De processor verwerkt deze dan. Je hebt dan nog altijd iets anders. Stel we hebben de volgende code:
mov ah, 0x18
mov ax, 0xEF
int 0x60
mov ah, 0x18 mov ax, 0xEF int 0x60
(Deze code werkt waarschijnlijk niet het is maar een voorbeeld)
De code hier wordt ingeladen in het geheugen op een bepaalde positie, ook wel een "address" of in het Nederlands adres genoemd. Stel dat deze code is ingeladen op 0x500 en als de processor op address 0x500 staat dan gaat het volgende gebeuren: ah krijgt de waarde 0x18, ax krijgt de waarde 0xEF en interrupt 0x60 wordt uitgevoerd. Dit gebeurt NOOIT tegelijkertijd. Enkel als je meerdere processoren zou hebben en veel geluk anders niet. Dus we hebben eigenlijk een byte array van commando's en parameters in het geheugen zitten. Dit houdt ook in dat multi-tasking niet werkelijk bestaat. Multi-tasking is het snel verwisselen van taken en het uitvoeren van de geselecteerde taak. Dit is nog maar het begin. Ken je hier niks van dan kan je het beter op een droom houden. Een programmeertaal maken eist veel denkwerk, één fout kan al fataal zijn. |