Согласно надежности браузера, после выполнения
000 PUSH1 60
002 PUSH1 40
004 MSTORE
Память это:
0x00: 00000000000000000000000000000000 ????????????????
0x10: 00000000000000000000000000000000 ????????????????
0x20: 00000000000000000000000000000000 ????????????????
0x30: 00000000000000000000000000000000 ????????????????
0x40: 00000000000000000000000000000000 ????????????????
0x50: 00000000000000000000000000000060 ????????????????
И еще, судя по тому, что я могу прочитать в желтой бумаге и других ресурсах , 0x60 должен храниться по адресу 0x40. Врет ли мне browser-solidity или я чего-то не понимаю?
Каждое слово в EVM имеет ширину 32 = 0x20 байт, поэтому, когда вы PUSH1 40
сохраняете слово по адресу 0x40, оно заполняет все байты до 0x5f. EVM использует формат с обратным порядком байтов , поэтому младшие байты слова сохраняются в конце. Таким образом, в вашем примере байт «0x60» правильно записан в ячейку 0x5f.
Структура данных из Browser Solidity немного вводит в заблуждение — вы видите только полслова в строке; все слово занимает две строки.