Opcodes
Lågnivåoperationer
Opcodes är en gratis lektion i Grunderna i Web3- och DApp-utveckling på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Grunderna i Web3- och DApp-utveckling, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Grunderna i Web3- och DApp-utveckling innehåller totalt 4 lektioner.
EVM:s instruktionsuppsättning
På den lägsta nivån kör EVM en sekvens av opkoder – instruktioner på en byte som var och en gör en enda sak.
Genom att förstå opkoder ser du vad din Solidity-kod faktiskt gör och vart gasen tar vägen.
Vad är en opkod?
En opkod (operationskod) är ett kommando på en byte som EVM kör. Exempel är ADD, MUL, PUSH1, SLOAD och JUMP.
Varje opkod har ett namn, ett numeriskt värde och en fast gaskostnad.
0x01 = ADD
0x02 = MUL
0x60 = PUSH1
0x54 = SLOAD
0x56 = JUMPOpkoder för stackhantering
Opkoder som PUSH, POP, DUP och SWAP hanterar stacken.
PUSH lägger till ett värde, POP tar bort ett, DUP duplicerar ett objekt och SWAP byter plats på två stackpositioner.
PUSH1 0x0A // [10]
DUP1 // [10, 10]
PUSH1 0x14 // [10, 10, 20]
SWAP1 // [10, 20, 10]Aritmetiska opkoder
Aritmetiska opkoder tar bort operander och lägger till resultat: ADD, SUB, MUL, DIV och MOD.
All matematik utförs på 256-bitars heltal utan tecken (med varianter för heltal med tecken).
PUSH1 0x09 // [9]
PUSH1 0x04 // [9, 4]
SUB // [5] (9 - 4)Jämförelser och logik
Opkoder som LT, GT, EQ, AND, OR och ISZERO hanterar jämförelser och bitvis logik.
De lägger till 1 för sant och 0 för falskt, vilket kontrollflödet sedan använder.
Opkoder för minne och lagring
Opkoder för dataflyttning arbetar med de kostsamma platserna:
MLOAD/MSTORE– läser från/skriver till minnetSLOAD/SSTORE– läser från/skriver till lagringen
SSTORE är en av de dyraste opkoderna.
Opkoder för kontrollflöde
JUMP och JUMPI (villkorligt hopp) flyttar exekveringen till en markör för JUMPDEST.
Det är så EVM implementerar loopar och if-satser på bytekodsnivå.
PUSH1 0x10 // jump target
JUMPI // jump if top of stack != 0
// ... at offset 0x10:
JUMPDEST // valid landing spotMiljöopkoder
Opkoder som CALLER, CALLVALUE, ADDRESS och TIMESTAMP tillhandahåller kontext.
CALLER lägger till exempel den adress som initierade anropet på stacken (detta är vad msg.sender kompileras till).
Gaskostnad per opkod
Varje opkod har en fastställd gaskostnad. Billiga opkoder som ADD kostar 3 gas, medan dyra opkoder som SSTORE kostar upp till 20000.
En transaktions totala gasmängd är summan av alla opkoder som den kör.
ADD -> 3 gas
MLOAD -> 3 gas
SLOAD -> 2100 gas
SSTORE -> up to 20000 gasFrån Solidity till opkoder
Solidity-kompilatorn omvandlar varje högnivåsats till många opkoder.
En enda uint x = a + b; blir PUSH, PUSH, ADD och en MSTORE eller SSTORE beroende på var x finns.
Sammanfattning
Opkoder är EVM:s atomära instruktioner för stack, aritmetik, logik, minne, lagring, kontrollflöde och miljö.
Varje opkod har en gaskostnad, och din Solidity-kod blir till slut en ström av sådana instruktioner.
Snabbtest
Testa dina kunskaper om opkoder.
Repetition: Opkoder
Du har lärt dig att:
- Opkoder är EVM-instruktioner på en byte
- De omfattar stacken, aritmetik, logik, minne, lagring, kontrollflöde och miljö
SSTOREhör till de dyraste- Solidity kompileras till många opkoder
Nästa steg: konton och tillstånd.
Lär dig Grunderna i Web3- och DApp-utveckling med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 29
- Lektioner
- 105
Vanliga frågor
Är lektionen ”Opcodes” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Grunderna i Web3- och DApp-utveckling, inklusive ”Opcodes”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Grunderna i Web3- och DApp-utveckling innehåller totalt 4 lektioner.
Vad lär jag mig i ”Opcodes”?
Lågnivåoperationer Ni övar på Grunderna i Web3- och DApp-utveckling med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Grunderna i Web3- och DApp-utveckling?
Du behöver inga förkunskaper. Utbildningen i Grunderna i Web3- och DApp-utveckling på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Opcodes”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Grunderna i Web3- och DApp-utveckling-lektionen?
Ja. Varje Grunderna i Web3- och DApp-utveckling-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.