Gas in FEVM works quite differently from the EVM. Instead of assigning a fixed gas cost in each instruction, FEVM charges FVM/FIL gas based on WASM code execution of the FEVM interpreter.
When executing a message that invokes an EVM contract, the FVM charges for the message chain inclusion (when the message originates off chain) and then invokes the actor that hosts the contract. The actor is an instance of the EVM actor, which uses the FEVM interpreter to execute the contract.
The FEVM interpreter must first load its state (including the contract state) which costs additional gas, and then begins execution of the contract bytecode. Each opcode interpreted may perform computation, syscalls, state i/o and send new messages, which are all charged with FIL gas. Finally, if the contract state is modified, the interpreter must flush it to the blockstore, which costs additional gas.
Thus in general it is not possible to compute gas costs for a contract invocation, without using gas estimation through speculative execution.
Gas FIPs:
- https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0032.md
- https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0037.md
- https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0054.md
Primitive Gas Price list: