zoukankan      html  css  js  c++  java
  • mov-[地址值]-call-lea-ret

    mov dest, src

    • src:来源 dest:目标 类似 dest=src

    [地址值]

    • []里面放的一定是地址值
    int a = 3;      //使用4个字节存储一个3
    mov    dword ptr [ebp-8],3    //3放入内存需要指定大小
    dword ptr    //ptr是语法,用于指定大小,左边是单位
    word是字,表示2字节,dword是4字节(double word),qword是8字节(quad word)
    

    call函数地址

    call 00112233    //会跳转到函数地址
    jmp  44556677    //会跳转到函数的真正地址
    

    为什么不直接用a的地址,而是ebp-8

    int a = 3;     //函数调用,开辟局部空间,每次ebp都是一个全新的值
    cout << &a << endl;
    

    全局变量a的地址值是写死的地址

    CPU的大小端模式 大部分都是小端模式(00000011先放到内存低地址处)

    mov    dword ptr [ebp-8],3    //存
    00000000 00000000 00000000 00000011    //00000011先放到内存4个字节空间的哪里呢
    
    mov    eax,dword ptr [ebp-8]    //读,从内存低到高吞并4字节
    00000000 00000000 00000000 00000011    //00000011读出来放到最后,小端模式
    
    • 调试-窗口-内存-选择一个

    lea dest, [地址值];直接把地址值赋给dest

    • lea,load effect address装载一个有效的地址值
    lea eax, [1122H]
    eax == 1122H
    

    ret函数返回

    xor op1, op2 异或结果赋值给op1

    • op1=op1 ^ op2

    add 加法

    sub 减法

    inc 自增

    • 类似于op = op + 1

    dec 自减

    jmp 内存地址

    cmp 比较

    jne:jump not equal不相等时跳转

    其他语言查手册

    • intel白皮书-非常大,最后再来这里找
    • https:software.intel.com/en-us/articles/intel-sdm
  • 相关阅读:
    【Hadoop环境搭建】Centos6.8搭建hadoop伪分布模式
    【Java安装】Centos6.8 安装Java1.6
    【SVN】win7 搭建SVN服务器
    【KVM】Ubuntu14.04 安装KVM
    【VNC】Ubuntu14.04LTS下安装VNC View
    【虚拟化】支持IDE/SATA/SCSI
    【KVM安装】在Centos6.8中安装KVM
    【脚本】新增未扩展磁盘容量
    【SVN】自动定时更新
    【GIS】地球经纬度和米换算(转)
  • 原文地址:https://www.cnblogs.com/sec875/p/12260301.html
Copyright © 2011-2022 走看看