当前位置: 首页 > news >正文

C++:提高篇: 栈-寄存器和函数状态:windows X86-64寄存器介绍

寄存器

  • 1、什么是寄存器
  • 2、寄存器分类
  • 3、windows X86寄存器命名规则
  • 4、寄存器相关术语
  • 5、寄存器分类
    • 5.1、RAX(accumulator register)
    • 5.2、RBX(Base register)
    • 5.3、RDX(Data register)
    • 5.4、RCX(counter register)
    • 5.5、RSI(Source index)
    • 5.6、RDI(Destination index)
    • 5.7、RSP(stack pointer)
    • 5.8、RBP(Base pointer)
    • 5.9、RIP(instruction pointer)
  • 6、普通寄存器
    • 6.1、R8~R15
    • 6.2、YMM0~15
    • 7、特别说明
  • 8、汇编指令
    • 8.1、数据格式
    • 8.2:操作数格式(寻址方式)
    • 8.3:汇编指令
      • 8.3.1:数据传送指令
      • 8.3.2:压入和弹出栈数据
      • 8.3.3:算术和逻辑操作
      • 8.3.4:控制指令

本篇博客是:栈-寄存器和函数状态专题第一篇文章,主要解释计算机中寄存器相关知识技术,下面的分析,我们都是基于下面这张图。
在这里插入图片描述

💙💙💙💙:重点
%ebp 和 %esp:栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的一个栈帧,%esp总是指向当前栈帧的顶部(低地址),而%ebp通常指向当前栈帧的底部(高地址),用于在栈帧中寻址

1、什么是寄存器

寄存器实际上知识存储数据的地方,只不过它集成在CPU里,访问寄存器的速度比访问内存更快,而内存的访问速度比硬盘更快。

2、寄存器分类

由于寄存器属于底层基础设施,贴近硬件,因此在不同体系结构和操作系统上,寄存器使用方式各异,但是基本上可以分为特殊功能寄存器和普通寄存器,特殊功能寄存器一般用于特定的功能,而普通寄存器可以随意使用。

3、windows X86寄存器命名规则

  • 前缀R:表示64位寄存器。例如:RAX
  • 前缀E:表示32位寄存器。例如:EAX
  • 后缀L:表示寄存器的低8位。
  • 后缀H:表示寄存器的9~16位

4、寄存器相关术语

  • byte:字节单位,表示8位二进制,是计算机的最小存储单元
  • WORD:字。一个字通常是指;两个字节(16位),针对windows X64平台,这个规则总是成立的,其他一些小众的平台不一定满足这一点。
  • DWORD:windows API的类型,用于表示“double world”的数据,即32位。
  • QWORD:windows API的类型,用于表示“qual word”的数据,即63位。
  • x86_x64:这是intel最先推出的指令集
  • 栈帧:用于记录程序在某时刻栈的状态,例如在调用一个函数之前,需要保存栈帧,用于在完成调用之后恢复现场。

5、寄存器分类

特殊功能寄存器分为:通用寄存器,索引寄存器。(我们以64位寄存器为例介绍)
---------------------------------------------------------------🎄🎄下面介绍通用寄存器-------------------------------------

  1. 通用功能寄存器:主要有四种即 【AX,BX,CX,DX】

  2. 在这里插入图片描述

  3. 细节方面:AX,BX,CX,DX可以再往下划分
    👩AX(Accumlator Register):累加寄存器,它主要用于输入/输出和大规模的指令运算
    👩BX(Base Register):基址寄存器,用来存储基础访问地址。
    👩CX(Count Register):计数寄存器,在迭代的操作中会循环计数。
    👩DX(Data Register):数据寄存器,它用于输入/输出操作,它还与AX一起使用,用于涉及大数值的乘法和除法运算。

  4. 这四种寄存器可以分为上半部分和下半部分。
    👨【AX寄存器可以分为两个独立的 8位 AH 和 AL寄存器】
    👨【BX寄存器可以分为两个独立的 8位 BH 和 BL寄存器】
    👨【CX寄存器可以分为两个独立的 8位 CH 和 CL寄存器】
    👨【DX寄存器可以分为两个独立的 8位 DH 和 DL寄存器】
    在这里插入图片描述
    在这里插入图片描述
    👩‍🦰 AX的地位(0-7)位构成了 AL 寄存器,高8位(8-15)位构成了AH寄存器。

  5. 在认识了寄存器之后,我们通过一个示例看一下数据的具体存储方式。
    比如:数据 19, 它在16 位存储器中所存储的表示如下:
    在这里插入图片描述
    寄存器的存储方式先是存储 低位,如果低位满足不了就存储高位,如果低位能够满足,高位就用0补全,在其他低位也能满足的情况下,其余位也用0补全。

-------------------------------------------------------🎪🎪🎢索引寄存器---------------------------------------------------
🎈🎈下面介绍索引寄存器

  1. 索引寄存器主要包含段地址的偏移量,索引寄存器主要分为:
  2. BP (Base Pointer): 基础指针,它是栈寄存器上的偏移量,用来定位栈上的变量。
  3. SP (Stack Point): 栈指针,它是栈寄存器上的偏移量,用来定位栈顶。
  4. SI (Source Index):变址寄存器,用来拷贝源字符串。
  5. DI(Destination Index): 目标变址寄存器,用来复制目标字符串。

------------------------------------------------🎭🎭🎭控制寄存器----------------------------------------------------------
🎀🎀下面介绍状态和控制寄存器
这两种寄存器是指令指针寄存器和 标志寄存器
IP (Instruction Pointer):指令指针寄存器,它是从Code Segment代码寄存器处的偏移来存储执行的下一条指令。
FLAG:FLAG寄存器用于存储当前进程的状态,这些状态有

  • 位置(Direction):用于数据块的传输方向,是向上传输还是向下传输
  • 中断标志位(Interrupt): 1–允许,0 --禁止
  • 陷入位(Trap) : 确定每条指令执行完成后,CPU是否应该停止。1–开启,0—关闭
  • 进位(Carry) :设置最后一个无符号算术是否带有进位
  • 溢出(Overflow): 设置最后一个由符号的运算是否溢出
  • 符号(Sign): 如果最后一次算术运算为负,则设置 1 —负, 0 —正
  • 零位(Zero) :如果最后一次算术运算结果为零, 1–零
  • 辅助进位(Aux Carry): 用于第三位到第四位的进位
  • 奇偶校验 (Parity):用于奇偶校验

5.1、RAX(accumulator register)

  1. accumulator register, 累加寄存器,👩通常用于存储函数的返回值,它主要用于输入/输出和大规模的指令运算,AX 寄存器可以说是使用频率最高的寄存器。

  2. 也可以用于存储其他值,只是通过RAX存储函数返回值属于惯例。
    在这里插入图片描述

  3. 上图我们可以看到这个寄存器分为8个字节(每个字节8位),RAX是64位寄存器的称呼。
    🤶🎅🤶 但是这个寄存器是可以拆分的,例如我们操作EAX,就是在对RAX的低32位进行操作
    同样类推:
    AX表示RAX的低16位
    AH表示RAX低16位中的高8位
    AL表示RAX低16位中的低8位
    除了了 RIP之外,其余的寄存器都可以做类似的拆分。

  4. 举例

mov ax,20  /* 将数字20存入寄存器 AX中*/
mov ah,80  /* 将数字80 存入寄存器 AX中的 AH(高位寄存器)中*/
mov al,10  /* 将数字10 存入寄存器 AX中的 AL(低位寄存器)中*/

5.2、RBX(Base register)

base register 基址寄存器,一般用于访问内存的基址
👩 :BX也被称为数据寄存器,即表明其能够暂存一般数据,同样也可以将BX当做两个独立的 8位寄存器使用即 BH 和BL
在这里插入图片描述
👨 BX除了具有暂存数据的功能之外,还用于寻址(即寻找物理地址),这就是为什么也有人将其称为基址寄存器,那么它存放的数据一般就用来作为偏移地址使用,因为偏移地址是相对于基址地址上的偏移。

5.3、RDX(Data register)

🧑:DX也是数据寄存器,能够暂存一般性数据。
在这里插入图片描述

5.4、RCX(counter register)

👧:counter register,计数寄存器。一般用于循环计数。

  1. 也可以称为数据寄存器,能够暂存一般性数据,可以分为CH 和CL
  2. 它也有专门功能:即计数器功能,当汇编指令使用 循环LOOP时,可以通过 CX来指定需要循环的次数,每次执行循环LOOP时间,CPU会做两件事
    一件事是:计数器自动减1
    另一件事是:判断CX中的值,如果CX中的值为0则跳出循环,继续执行循环下面的指令,如果CX中的值不为0,则会继续执行循环中所指定的指令。
    在这里插入图片描述

--------------------------------------索引寄存器--------------------------------------------------------------------

5.5、RSI(Source index)

source index : 源变址寄存器,字符串运算时常应用于源指针
在这里插入图片描述

5.6、RDI(Destination index)

destination index 目标变址寄存器,字符串运算时常用于目标指针。
在这里插入图片描述

5.7、RSP(stack pointer)

  1. stack Pointer 栈指针寄存器
  2. 正常情况下存放栈顶地址
  3. 如果用于其他事务,使用完成之后需要恢复原先的数据
    在这里插入图片描述

5.8、RBP(Base pointer)

  1. base pointer 基址寄存器
  2. 正常情况用于访问栈底地址,与RBP功能类似
  3. 如果用于其他事务,使用完成之后需要恢复原先的数据
    在这里插入图片描述

---------------------------------------🧶🧶🧶控制寄存器--------------------------------------------------------------

5.9、RIP(instruction pointer)

  1. instruction pointer 指令指针
  2. 只读且不可拆分,指向下一条需要执行指令的地址
    在这里插入图片描述

6、普通寄存器

6.1、R8~R15

  1. R8,R9, R10…R15属于普通寄存器,一般是可以任意使用的,不指定特定用途,支持拆分
  2. 拆分规则与特殊功能寄存器有所不同。 32位拆分寄存器以 D作为后缀(DWORD),16位寄存器以 W作为后缀 (WORD),8位则以 B作为后缀 (BYTE)。

在这里插入图片描述

6.2、YMM0~15

YMM015专门用于存储浮点数(包括float和double)。单个寄存器可以存放多个浮点数。例如YMM#支持存放四个64位数值或者8个32位值。支持拆分成XMM015。
在这里插入图片描述

7、特别说明

  1. RSP, RBP最好只用作常规用途。
  2. 如果另作他用,使用完之后应该恢复原来的数据,因为这两个寄存器包含栈帧信息,这对程序非常重要。
  3. 一般的寄存器只能存放一个值,但是XMM和YMM寄存器可以看作是数组,它们可以存放多个浮点数。

8、汇编指令

8.1、数据格式

intel数据类型汇编代码后缀
字节b
字(2字节)w
双字(4字节)l
四字(8字节)q
单精度(4字节)s
双精度(8字节)l

1: Intel使用 字(word)表示 16位数据类型
2:汇编指令除了要指明操作对象,还要指明操作对象的数据类型和长度,所以为指明操作对象的数据类型和长度,可以在指令后面加上表示数据类型的后缀,如:movl 和 movq 分别表示操作对象为双字和四字。
但是操作长度也可以通过寄存器给出,如:eax表示 32位,rax 表示64位

8.2:操作数格式(寻址方式)

在这里插入图片描述

8.3:汇编指令

8.3.1:数据传送指令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
------------------------💜💜 数据传送指令举例💜💜-----------------------

  1. move : 数据传递指令,目的操作数不能是立即数,数据不能从内存直接传送到内存(如一定需要,转化成2条指令,从内存取数据到寄存器,然后从寄存器到内存)
    💛💛💛💛 move $4, 17(%rsp) : 把数据4 存储到 17(%rsp)所在内存的地址值里。
  2. lea:(load effective address)其实是mov的变形,它的源操作数看上去是一个内存引用,但并非从指定位置读入数据,而是将有效地址写入到目的操作数,目的操作时只能为寄存器。
    💚💚💚💚 lea17(%rsp), %rax :把17(%rsp)的内存地址的值写入到 %rax寄存器中。

8.3.2:压入和弹出栈数据

这两个操作都会修改 %rsp的值

8.3.3:算术和逻辑操作

注意,ADD S,D 由四条加法指令组成,即 addb, addw, addl 和 addq,其他指令也是如此
在这里插入图片描述
Intel把16字节的数称为八字(oct word)。下面是一些特殊的指令:
在这里插入图片描述

8.3.4:控制指令

-----------------------------------------💔💔条件码💔💔---------------------------------

CPU维护着一组单个位的条件码寄存器,它们描述了最近的算数或者逻辑操作的属性,可以检查这些寄存器来执行条件分支指令。最常用的条件码有:

  • CF:进位标志,最近的操作使最高位产生了进位,可用于检查无符号操作的溢出。

  • ZF:零标志,最近的操作得出的结果为0。

  • SF:符号标志,最近的操作得到的结果为负数 。

  • OF:溢出标志,最近的操作导致一个补码溢出(正溢出获负溢出)。

算术和逻辑操作列出的指令中,除了leaq,其他指令都会修改条件码寄存器。
除了算数和逻辑操作指令可以改变条件码寄存器,下面的指令也可以改变:
在这里插入图片描述

-----------------------------------------💔💔访问条件码💔💔----------------------------
条件码通常不会直接读取,常用的使用方法有三种。

  1. 更具条件码的某种组合,将一个字节设置为0或者1
  2. 根据条件码进行跳转
  3. 有条件地传送数据
    在这里插入图片描述
    -----------------------------------------💔💔跳转指令💔💔----------------------------
    在这里插入图片描述
    --------------------------------💔💔条件传送指令💔💔----------------------------
    在这里插入图片描述
    --------------------------------💔💔转移控制💔💔----------------------------
    在这里插入图片描述

相关文章:

C++:提高篇: 栈-寄存器和函数状态:windows X86-64寄存器介绍

寄存器1、什么是寄存器2、寄存器分类3、windows X86寄存器命名规则4、寄存器相关术语5、寄存器分类5.1、RAX(accumulator register)5.2、RBX(Base register)5.3、RDX(Data register)5.4、RCX(counter register)5.5、RSI(Source index)5.6、RDI(Destination index)5.7、RSP(stac…...

MyBatis-Plus入门案例

MyBatis-Plus入门案例一、MyBatis-Plus简介1、简介2、特性3、支持数据库4、框架结构5、代码及文档地址二、入门案例1、开发环境2、建库建表3、创建Spring Boot工程a>初始化工程b>引入依赖4、编写代码a>配置application.yml 或者 application.propertiesb>添加实体c…...

适用于 Windows 11/10/8/7 的 10 大数据恢复软件分享

适用于 Windows 11/10/8/7 的 最佳数据恢复软件综述。选择首选的专业数据/文件恢复软件,轻松恢复丢失的数据或删除的照片、视频等文件、SSD、外接硬盘、USB、SD卡等存储设备中的文件等。流行的sh流行的数据恢复软件也包括在内。 10 大数据恢复软件分享 为了帮助您恢…...

在线支付系列【23】支付宝支付接入指南

有道无术,术尚可求,有术无道,止于术。 文章目录前言接入指南1. 创建应用2. 绑定应用3. 配置密钥4. 上线应用5. 开通产品沙箱环境开发前准备(沙箱环境)1. 获取参数、秘钥、证书2. 下载支付宝客户端3. 案例演示前言 在之…...

linux系统常用命令

目录 一、系统介绍 二、Linux常用命令 1、Linux命令格式 2、文件目录操作命令:ls 3、文件目录操作命令:cd 4、文件目录操作命令:cat 5、文件目录操作命令:more 6、文件目录操作命令:tail 7、创建文件命令&…...

面试(十一)new与delete(整理) 及 内存泄露

c语言经常使用的是free与malloc,而c++又引入了new和delete它们的区别是什么呢? 内置类型 对于内置类型来说,free和delete、malloc和new几乎没什么区别,但如果是连续的空间,malloc和free只能申请和释放一块空间的内容,而new[] 和 delete[] 可以申请和释放一段连续的空间。…...

2D图像处理:2D ShapingMatching_缩放_旋转_ICP_显示ROI

文章目录 调试结果参考调试说明问题0:并行运行问题问题1:模板+Mask大小问题问题2:组合缩放和旋转问题3:可以直接将计算边缘的代码删除问题4:如何在原始图像上显示匹配到的ROI问题5:计算的原始旋转角度不需要判断,直接可以在ICP中使用问题6:绘制坐标轴问题7:绘制ROI调试…...

(考研湖科大教书匠计算机网络)第四章网络层-第一、二节:网络层概述及其提供的服务

获取pdf:密码7281专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一:网络层概述(1)概述(2)学习内容二:网络层提供的两种服务(1)面向连…...

概论_第8章_假设检验的基本步骤__假设检验的类型

一. 假设检验的基本步骤如下:第1步 根据实际问题提出原假设 及备择假设 , 要求 与 有且仅有一个为真;第2步 选取适当的检验统计量, 并在原假设 成立的条件下确定该检验统计量的分布;第3步 按问题的具体要求, 选取适当…...

SpringMVC--简介和入门案例

SpringMVC简介 什么是MVC MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分 M:Model,模型层,指工程中的JavaBean,作用是处理数据 JavaBean分为两类: 一类称为实体类Bean:专门存储业务数据的,如 Studen…...

Cmake入门02-检测环境(笔记)

文章目录检测操作系统处理平台相关源码处理编译器相关源码编译编译处理器相关源码检查cpu是32位还是64位的检测cpu架构处理 CPU指令相关源码案例展示 Eigen3向量化加速项目设置编译器开启向量化优化《CMake cookbook》笔记检测操作系统 cmake中通过CMAKE_SYSTEM_NAME变量来识别…...

Android JNI C++读写本地文件

文章目录小结Android JNI使用CAndroid JNI读写本地文件有关权限创建文件夹访问 /storage/emulated/0/访问/data/data/example.jniwritefile/时间戳Cant determine type for tag参考小结 进行Android JNI C读写本地文件,取得了想要的效果。 Android JNI使用C 对于…...

图形化深度学习开发平台PaddleStudio(代码开源)

目录一、PaddleStudio概述二、环境准备2.1 安装PaddlePaddle2.2 安装依赖库三、基本使用介绍3.1 启动3.2 快速体验3.2.1 下载示例项目3.2.2 训练3.2.3 评估3.2.4 测试3.2.5 静态图导出四、数据集格式4.1 图像分类4.2 目标检测4.3 语义分割4.4 实例分割五、趣味项目实战&#xf…...

【力扣-LeetCode】1138. 字母板上的路径-C++题解

1138. 字母板上的路径难度中等98收藏分享切换为英文接收动态反馈我们从一块字母板上的位置 (0, 0) 出发,该坐标对应的字符为 board[0][0]。在本题里,字母板为board ["abcde", "fghij", "klmno", "pqrst", &quo…...

基于Java+SpringBoot+Vue前后端分离酒店管理系统设计与实现

博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建、毕业项目实战、项目定制✌ 博主作品:《微服务实战》专栏是本人的实战经验总结,《S…...

【软考系统架构设计师】2022下综合知识历年真题

【软考系统架构设计师】2022下综合知识历年真题 【2022下架构真题第01题:绿色】 01.云计算服务体系结构如下图所示,图中①、②、③分别与SaaS、PaaS、Iaas相对应,图中①、②、③应为( ) A.应用层、基础设施层、平台层 B.应用层、平台层、基础…...

【计组】理解Disruptor--《计算机组成原理》(十五)

Disruptor 的开发语言,并不是很多人心目中最容易做到性能极限的 C/C,而是性能受限于 JVM 的 Java。其实只要通晓硬件层面的原理,即使是像 Java 这样的高级语言,也能够把 CPU 的性能发挥到极限。 一、Padding Cache Line&#xff…...

Windows11 安装Apache24全过程

Windows11 安装Apache24全过程 一、准备工作 1、apache-httpd-2.4.55-win64-VS17.zip - 蓝奏云 2、Visual Studio Code-x64-1.45.1.exe - 蓝奏云 二、实际操作 1、将下载好的zip文件解压放到指定好的文件夹。我的是D:\App\PHP下 个人习惯把版本号带上。方便检测错误。 2…...

1302机器翻译(队列)

目录 题目描述 提示 解题思路 代码部分 题目描述 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词&#…...

AcWing、第 90 场周赛:4806. 首字母大写、4807. 找数字、4808. 构造字符串(C++)

目录 4806. 首字母大写 题目描述: 实现代码: 4807. 找数字 题目描述: 实现代码: 回溯(超时): 原理思路: 贪心: 原理思路: 4808. 构造字符串 问题…...

跟同事杠上了,Apache Beanutils为什么被禁止使用?

收录于热门专栏Java基础教程系列(进阶篇) 在实际的项目开发中,对象间赋值普遍存在,随着双十一、秒杀等电商过程愈加复杂,数据量也在不断攀升,效率问题,浮出水面。 问:如果是你来写…...

Golang 模糊测试的使用

一 背景 在 Go 1.18 中,Go 语言新增模糊测试(Fuzzing)。Fuzzing,又叫fuzz testing,中文叫做模糊测试或随机测试。其本质上是一种自动化测试技术,更具体一点,它是一种基于随机输入的自动化测试技术,常被用于发现处理用户输入的代码中存在的bug和问题。模糊测试和常规的功能…...

RSA公钥加密机制跨语言应用实战

在公钥密码学中(也称为非对称密码学),加密机制依赖于两个密钥:公钥和私钥。公钥用于加密消息,而只有私钥的所有者才能解密消息。实际应用中通常需要对公钥和私钥进行序列化,然后分发密钥实现在不同场景、不同语言环境中使用。本文…...

P7面试送命题

面试总结,对标市场P7。什么叫送命题,一道题回答不上来面试直接挂的题目。JVM 运行时数据区域内存回收机制GC root有哪些volatile原理synchronize原理JDK 集合家族介绍HashMap原理ConcurrentHashMap原理Thread生命周期ThreadPoolExecutor生命周期、实例化…...

零信任-微软零信任介绍(2)

微软零信任是什么? Microsoft Zero Trust 是一种安全架构,旨在在没有信任任何设备、用户或网络的情况下保护网络。这种架构使用多重验证和分段技术,以确保每个请求和资源的安全性。 零信任不假定任何内部用户或设备是安全的&#xff…...

C++中对象调用成员函数this指针的作用

C中对象调用成员函数this指针的作用 Sales_data total;//定义对象 total.isbn();//调用对象中的成员函数isbn成员函数isbn()通过一个名为this的额外隐式参数来访问调用它的对象total。当我们调用一个成员函数时,用请求该函数的对象地址初始化this。 例如&#xff0…...

JavaScript------数组

目录 一、简介 1、什么是数组? 2、创建数组 3、数组的数据类型 4、向数组中添加元素 5、读取数组中的元素 6、实例属性:length 二、遍历数组 方式一:for循环 方式二:for...of 三、数组方法(常用&#xff09…...

迷宫《1》

一天蒜头君掉进了一个迷宫里面,蒜头君想逃出去,可怜的蒜头君连迷宫是否有能逃出去的路都不知道。看在蒜头君这么可怜的份上,就请聪明的你告诉蒜头君是否有可以逃出去的路。输入格式第一行输入两个整数 �n 和 �m&#x…...

剑指 Offer 20. 表示数值的字符串

剑指 Offer 20. 表示数值的字符串 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。 数值(按顺序)可以分成以下几个部分: 若干空格 一个 小数 或者 整数 (可选)一个 ‘e’ 或 ‘…...

阻抗匹配之反射波形测量

稍微接触过高速信号的朋友,一定对阻抗匹配和信号反射都有所了解,甚至可以按照公式,把反射波形一路推导出来。但是,纸上得来终绝浅,绝知此事要躬行。 今天,我们就来实测一下信号反射波形,测试环…...

小程序做网站/怎样让自己的网站排名靠前

早上客户反应,其网站无法访问,无限转圈上服务器,查看磁盘空间df -h,内存使用率free -m,网络流量iftop均正常然后使用top查看时,发现mysql的cpu使用率上升到200%。解决过程回放进入mysql查看正在执行的sqlmy…...

邯郸网站制作外包/百度关键词价格查询软件

题目: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:“23” 输出:[“ad”, “ae”, “af”, “bd”, “…...

网站建设原创文章 关键词/广州市网络seo外包

rpm 包安装过程中依赖问题“libc.so.6 is needed by XXX”解决方法(Liunx安装mysql报错) 原因:安装了64位的Linux 我安装的是 centOS 6.5 64位 64位的linux 对于 默认只安装主架构所需要的包 不会安装其他多余的包, 报错信息&…...

iis做的网站其他电脑能看吗/网站cms

由于分判商工程款及业主收入之明细都与标书清单之间有外键关联&#xff0c;EDM模型中会自动建立以下关系&#xff1a;SPaymentDetail <---> BillQuantity 外键&#xff1a;FK_SPaymentDetail_BillQuantityProjectIncomeDetail <---> BillQuantity 外键&#…...

汽车制造行业网站模板/上海单个关键词优化

java课程设计报告--计算器设计 1 课 程 Java 程序设计 题 目 计算器设计 年 级 2010 级 专 业 信息一班 学 号 姓 名 组 员 指导教师 课程设计题目计算器设计 2 课程设计论文任务书 基础基础 学 院 信息与计算科学信息与计算科学 专 业 20101 班 一、课程设计论文题目 计算器的…...

乳山网站开发/网上营销策略有哪些

费了好大的劲终于成功了终于注册成功GEE了&#xff0c;下面把注册过程记录一下。 GEE注册过程一、注册Google账号1.打开GEE注册页面&#xff1a;Google Earth Engine点击右上角Sig up。2.创建用户3.输入手机号验证4.添加辅助邮箱二、GEE申请使用1.点击进入GEE官网&#xff1a;h…...