Grunderna i Web3- och DApp-utveckling · Lektion

Opcodes

Lågnivåoperationer

Lektion 3 av 413 steg

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 = JUMP

Opkoder 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 minnet
  • SLOAD / 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 spot

Miljö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 gas

Frå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ö
  • SSTORE hör till de dyraste
  • Solidity kompileras till många opkoder

Nästa steg: konton och tillstånd.

Gratis att börja

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.

Alla lektioner i den här kursen

  1. Ethereum Virtual Machine
  2. Lagring, minne och stack
  3. Opcodes
  4. Konton och tillstånd
← Tillbaka till Grunderna i Web3- och DApp-utveckling