`

移位运算

 
阅读更多
pragma solidity >=0.4.0 <0.9.0;
import "hardhat/console.sol";

contract Move {
    fallback() external {
        console.log("fallback");
        bytes memory _bytes = msg.data;

        //0x00000008000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d560000000000000000000000000000000000000000000000000000000000000064
        console.logBytes(_bytes);
        uint256 tmp;
        address addr;
        uint256 amount;
        uint32 methodId;
        assembly {
            tmp := mload(add(add(_bytes, 0x20), 0))
            addr := mload(add(add(_bytes, 0x24), 0))//4+32
            amount := mload(add(_bytes, 0x44)) //68
            //methodId := mload(add(_bytes, 0x4))
        }
        methodId = uint32(tmp >> 224);
        console.log("method id",methodId);
        console.log("addr:",addr);
        console.log("amount:",amount);
    }

    function f() external {
        address addr1 = 0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56;
        uint256 amount = 100;
        address(this).call(abi.encodeWithSelector(0x00000008, addr1,amount));
    }
}



const { expect } = require("chai");
const { ethers } = require("hardhat");

constractName = "Move";

describe("contract", function () {
  it("test", async function () {
    const TestContract = await ethers.getContractFactory(constractName);
    const testContract = await TestContract.deploy();
    await testContract.f();
  });
});




fallback
0x00000008000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d560000000000000000000000000000000000000000000000000000000000000064
method id 8
addr: 0xe9e7cea3dedca5984780bafc599bd69add087d56
amount: 100
分享到:
评论

相关推荐

    运算器移位运算实验实验报告.pdf

    在计算机组成原理的学习中,运算器移位运算实验是一项至关重要的实践内容,它不仅帮助学生深入理解运算器的工作机制,而且对于数据在计算机中的传输和处理流程的理解起到了重要的桥梁作用。该实验的目的是使学生掌握...

    计算机组成带移位运算实验报告

    计算机组成原理实验报告的核心是理解和应用带移位运算在计算机硬件层面的操作。移位运算在计算机科学中扮演着重要角色,特别是在数据处理和算术运算中。本实验旨在通过设计和实现一个带移位运算的模型机,让学生深入...

    带移位运算模型机的设计与实现

    带移位运算模型机的设计与实现 本资源摘要信息旨在对带移位运算模型机的设计与实现进行详细的知识点描述。该模型机由微程序控制器控制,通过设计和实现计算机的基本步骤和方法来掌握机器指令的使用和编程。 一、...

    计算机组成原理 实验五 带移位运算模型机的设计与实现

    其中,实验五的主题是“带移位运算模型机的设计与实现”,旨在通过对模型机的设计与调试,加深学生对微程序控制器以及数据通道控制的理解。 首先,让我们来明确一下实验的目标。实验的主要目的是通过设计与实现一款...

    计算机组成原理实验二-移位运算实验.docx

    在计算机组成原理中,移位运算是一种基本的算术和逻辑运算,广泛应用于各种计算和数据处理场景。移位运算通常包括左移、右移和循环移位等类型,它们在计算机内部处理二进制数时起着重要作用。在本实验“计算机组成...

    负数移位运算讲解

    ### 负数移位运算详解 在计算机科学与编程领域中,移位运算是一个非常重要的概念。本文将深入探讨C语言中的负数移位运算,并通过具体的例子来解释其实现过程。移位运算包括左移(`)和右移(`&gt;&gt;`)两种类型。 ####...

    移位运算器实验报告

    移位运算器是一种重要的数字逻辑电路,主要用于处理二进制数据的移位操作。移位操作在计算机科学和数字电子领域中广泛应用,包括数据处理、算术运算、串行通信等场景。本实验报告主要围绕74LS299芯片进行,这是一种...

    广东工业大学计组实验报告带移位运算模型机的设计与实现五

    广东工业大学的计组实验报告,以“带移位运算模型机的设计与实现五”为主题,详细探讨了移位运算和微程序控制器相结合的实验过程。本次实验不仅旨在加深学生对微程序控制器及其控制数据通道的理解,而且还着重于使...

    计算机组成原理 课设任务书--基本模型机和带移位运算的模型机设计与实现

    本任务书的核心是构建“基本模型机”和“带移位运算的模型机”,旨在帮助学生掌握计算机硬件设计的基础知识,理解数据在计算机中的表示、存储和处理方式,以及指令系统的构造原理。 首先,我们要讨论基本模型机的...

    广工计算机组成原理实验五带移位运算模型机的设计与实现

    【计算机组成原理】\n\n本实验主要涉及的是计算机组成原理中的一个重要概念——带移位运算的模型机设计与实现。在广工的计算机组成原理实验五中,学生需要掌握微程序控制器控制的模型机数据通道,理解机器指令的使用...

    C51之移位运算

    C51之移位运算 C51之移位运算是指在C51单片机中实现移位运算的方法。移位运算是一种基本的位运算,通过将二进制数的每一位向左或向右移动来实现数据的移位。在C51单片机中,可以使用RR、RRC、RL、RLC等指令来实现...

    计算机组成原理之定点数的移位运算

    "计算机组成原理之定点数的移位运算" 定点数的移位运算是计算机组成原理中的一种重要运算方式。在本节中,我们将详细讲解定点数的移位运算,包括算数移位、逻辑移位和循环移位等。 一、引子 在学习定点数的移位...

    计算机组成原运算器及移位运算器实验报告

    2.了解4位函数发生器74LS181的组合功能,熟悉运算器执行算术操作和逻辑操作的具体实现过程; 3.验证带进位控制的74LS181的功能。 二、实验设备: EL-JY-II型计算机组成原理实验系统一套,排线若干。

    JAVA基础之java的移位运算

    Java的移位运算涉及到整数类型数据的二进制位操作,这对于理解计算机底层运作和优化代码至关重要。移位运算主要包括左移运算符()和右移运算符(&gt;&gt;,&gt;&gt;&gt;)。在Java中,所有的整数类型(除了char类型外)都是有符号...

    计算机组成原理移位运算实验报告借鉴.pdf

    计算机组成原理中的移位运算是一种基本的数字处理操作,它涉及到二进制数在位级上的移动。在计算机系统中,移位运算被广泛应用于算术运算、位操作以及数据处理等多个领域。本实验报告主要关注逻辑移位和算术移位两种...

    计算机组成原理-移位运算.ppt

    计算机组成原理-移位运算 计算机组成原理是计算机科学的基础学科,它研究计算机的硬件结构、工作原理和性能指标。移位运算是计算机运算的基础,它是计算机科学中最基本和最常见的运算操作之一。 移位操作按移位...

    移位运算器实验报告.docx

    移位运算器是一种在数字系统中广泛使用的组件,它能够按照特定的指令对二进制数进行左移、右移、循环左移或循环右移等操作。在本实验报告中,我们将深入探讨移位运算器的工作原理和操作方法,以74LS299移位发生器为...

Global site tag (gtag.js) - Google Analytics