zoukankan      html  css  js  c++  java
  • 32位汇编基础_内存_每个应用进程都会有自己独立的4GB内存空间

    1、每个应用进程都会有自己独立的4GB内存空间

     

    这句话很多人听起来可能会很矛盾很不解。

    例如,我的电脑只有2GB的内存,打开个软件机会占用4GB内存,而我的电脑内存只有2GB,显然不够用,但是为什么程序还能在我的电脑上流畅运行呢?因为程序占用的这4GB内存是一个空头支票,知识口头上说给你4GB内存,其实没有全部给你,而是你用到多少就会从物理内存中给你多少。

    2、内存地址

    内存地址不像寄存器那样只有几个,内存地址有非常多所以起名字的时候都是用编号,每块内存地址都有其唯一的编号,就像寄信的地址一样,我们灭此用到这块内存时都会根据它的地址去寻找这块内存。

    每个编号(内存地址)对应的内存块的容量最少是8位,一个字节。

    一个内存地址有32位。像0x00000000,是由8个16进制的数组成,1个16进制的数对应着4个2进制的位,所以4x8=32,一个内存地址有32位。

    我们来算一下32位的内存空间有多大:

    内存地址一共有多少个(包括0x00000000)  FFFFFFFF+1=100000000

    16进制内存空间:              800000000

    换算成十进制 Bit:                34359738368

    Byte:                    4294967296

    KB:                    4194304

    MB:                    4096

    GB:                    4

    现在你可以知道,32位的程序最大就是寻址空间就是4GB,所以每个程序占用4GB的内存空间。

    向内存中存放数据

    MOV  指令

    mov指令移动数据时要保证左右两边的数据宽度是一样的。

    绝大部分指令是不能把数据从内存移动到内存的。

    (1)、立即数到内存

        mov byte ptr ds:[0146FCF4],1

        将立即数1,写入内存地址为0146FCF4 的地方

      mov :指令

      byte:写入数字的大小(1个字节)   word:2个字节  dword:4个字节

      ptr ds:[] :写入内存的哪个地址

      1    :要写入的数据

     

    (2)、寄存器到内存

       mov dword ptr ds:[0146FCFC],esp

       将esp寄存器里面的值写入内存地址为014FCFC的内存空间

     

    (3)内存到寄存器

       mov esp,dword ptr ds:[0x0146FCF8]

       将内存中的值存入寄存器。

  • 相关阅读:
    leetcode231 2的幂 leetcode342 4的幂 leetcode326 3的幂
    leetcode300. Longest Increasing Subsequence 最长递增子序列 、674. Longest Continuous Increasing Subsequence
    leetcode64. Minimum Path Sum
    leetcode 20 括号匹配
    算法题待做
    leetcode 121. Best Time to Buy and Sell Stock 、122.Best Time to Buy and Sell Stock II 、309. Best Time to Buy and Sell Stock with Cooldown 、714. Best Time to Buy and Sell Stock with Transaction Fee
    rand7生成rand10,rand1生成rand6,rand2生成rand5(包含了rand2生成rand3)
    依图
    leetcode 1.Two Sum 、167. Two Sum II
    从分类,排序,top-k多个方面对推荐算法稳定性的评价
  • 原文地址:https://www.cnblogs.com/chuijingjing/p/9266959.html
Copyright © 2011-2022 走看看