Storage
使用內聯彙編寫入儲存
我有這份契約,我使用內聯彙編來添加兩個數字。
pragma solidity ^0.8.0; contract Test { function add(uint a, uint b) external { assembly { let sum := add(a,b) mstore(mload(0x40), sum) } } }
現在的問題是,如何將變數寫入
sum
儲存?換句話說,如何讓這個sum
持久化?
在程序集末尾添加以下行 -
sstore(value.slot, sum)
這會將
sum
值儲存到合約變數的槽中value
。您還可以刪除
mstore
和本地 varsum
並直接寫入變數 -contract Test { uint256 public value; function add(uint a, uint b) external { assembly { sstore(value.slot, add(a,b)) } } }
考慮到這不處理算術溢出,如果輸入數字
a + b
大於uint256
.