技术标签: 网络安全
基于ARM汇编代码进行讨论
LDR #加载内存
STR #存入内存
如下示例了无内存偏移、有内存偏移以及有无寄存器值改变(intptr++)的不同情况
例如
struct{
char a;
short b;
long c;
}
假如结构体起始地址为0x0,a大小是1字节,所以a与1字节位置对齐,所以a存放在0x0;
同理,b与2字节位置对齐,所以其起始位置为0x2,注意a与b中间有1字节的空白;c与8字节位置对齐,所以其起始位置为0x8,注意b与c中间有4字节的空白;
最后,整体(结构体)与结构中最长的字长对齐,即8字节,所以结构体的长度为16字节
形式:
virtual int fun(){
return 0;}
特点:虚函数是可继承的,并且在子类中可以重载
RTTI(Run Time Type Information)
使用typeid
运算符来在运行时获取对象类型
可以辅助识别类的结构信息和继承关系
B.cond label
BR/BLR Xm #跳转到寄存器存储的地址
BL <address> #函数调用,将next pc保存到LR寄存器
RET(Xm) #若未指定Xm,则将PC设置为LR寄存器内存 储的地址,否则设置为Xm寄存器内的值
CBZ/CBNC X0,label #判断寄存器是否为0
TBZ/TBNZ W0,#20,label #寄存器某一位是否为1
当switch语句分支过多时,在内存中会以跳转表的形式进行跳转;
跳转表定义在函数主体之外,当要使用时通过不同case产生不同的offset(偏移),以跳转到不同的分支
Register | APCS Role |
---|---|
X0 | 返回值 |
X0…X7 | 函数参数 |
X8 | 间接结果地址寄存器 |
X9…X15 | 调用者保存寄存器 |
X16,X17(IP0,IP1) | 函数内暂存寄存器 |
X18 | 平台寄存器 |
X19…X28 | 被调用者保存寄存器 |
X29(FP) | 栈帧寄存器 |
X30(LR) | 链接寄存器 |
SP | 栈顶寄存器 |
Register | APCS Role |
---|---|
V0 | 返回值 |
V0…V7 | 函数参数寄存器 |
V8…V15 | 被调用者保存寄存器 |
V16…V31 | 临时寄存器 |
例如这样的两个类A、B
// test.cpp
class A {
public:
int x;
A() {
x = 0; }
virtual void f() {
x += 1; }
virtual void g() {
x += 2; }
void h() {
x += 3; }
} ;
class B: public A {
public:
void f() {
x += 5; }
};
int main() {
B* b = new B();
b->h();//调用
return 0;
}
调用过程
ldr X0,[sp,40] #X0存放对象地址
bl _ZN1A1hEv #调用A类的h方法
原因:C++支持函数重载,所以相同的函数名可能代表不同的方法
1._Z4funci
2._Z4funcid
int func(int i){} //1.
double func(int i,double d){} //2.
复杂函数:命名空间内的函数或成员函数
1._ZN3Foo3barEv
2._ZN3Foo3barEd<
class Foo {
public:
int bar() const {
//1.
return 123;
}
int bar(double x) {
//2.
return x;
}
};
C函数中没有C++这种重载命名方法,所以C++调用C函数会出现找不到函数的问题
使用extern "C"来在C++代码声明C
文章浏览阅读1.4k次。点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达摘自先进测控之家《长着眼睛的机械手》课题摘要——利用图像处理技术,在50*50CM的区域内识别出5枚硬币(硬币位置任意),并且控制机械手逐一拾取5枚硬币,然后把5枚硬币逐一叠放到指定位置(指定位置随机)。图像处理过程详解——LabVIEWVision Assistant硬币位置识别算法分析与设计硬币的识别是本系统软件设计最为关..._图像处理
文章浏览阅读774次,点赞35次,收藏25次。专题的前两篇文章([ MATLAB ] 傅里叶变换(二):傅里叶级数(复指数表示)),我们讨论了连续周期信号傅里叶级数的两种表示形式,初步建立了频谱的概念。然而,就实际经验而言,非周期信号才是主流。因此,这篇文章将讨论非周期连续信号的谱密度(通常简称为频谱),即大名鼎鼎的傅里叶变换FT,并用Matlab仿真加强理解。可以采用物理中的密度的方式类比谱密度的概念,从而理解傅里叶变换中谱密度的意义。不需要再执着于分量幅值的绝对大小,而是聚焦于相对大小。_傅里叶变换可视化,plot3函数,matlab
文章浏览阅读360次,点赞8次,收藏8次。市调机构给出的数据指11月份华为手机在国内手机市场的份额达到14%,远超此前鸿蒙系统在国内手机操作系统8%的市场份额,这意味着随着华为5G手机的回归,鸿蒙系统的市占率将快速上涨。此前鸿蒙系统主要依靠华为手机的存量用户支持,在华为的推动下,诸多华为存量手机用户都转为了鸿蒙系统,这成为鸿蒙系统的第一批种子。随后华为在自己的穿戴设备、汽车等诸多产品上发展鸿蒙系统,还通过与美的等国内家电企业合作推广鸿蒙系...
文章浏览阅读183次,点赞9次,收藏2次。#VM虚拟机8G内存,安装完毕,半个小时左右#在线安装#环境 centos 7.4.1708 x86_64#在线安装openstack pikePS: 排版问题,还在研究。wangleideMacBook-Pro:Downloads wanglei$ cat pike.install.sh#!/bin/sh# openstack pike 单机 一键安装# 环..._ali-pike.repo
文章浏览阅读1.9k次。formData1.创建一个formData对象var fd = new FormData(‘form表单’);(创建formdtata对象的小括号里面,就是需要一个form表单dom对象)。2.往fd对象中添加对象fd.append(‘sex’,‘男’);3.formData里面就会有form表单中 有name属性的这些标签的取值。//键值对形式console.log(fd.ge...
文章浏览阅读244次。文章来源:【公众号:云加社区】目录简介整体生态工作原理Metric 指标PromQLGrafana 可视化监控告警简介Prometheus 是一个开源的完整监控解决方案,本文将从指标抓取到查询及可视化展示,以及最后的监控告警,对 Prometheus 做一个基本的认识。Prometheus 是古希腊神话里泰坦族的一名神明,名字的意思是“先见之明”,下图中是 Promet..._dtm prometheus
文章浏览阅读3.7k次,点赞6次,收藏9次。我为什么选择ECharts ? 本周学校课程设计,原本随机佛系选了一个51单片机来做音乐播放器,结果在粗略玩了CN-DBpedia两天后才回过神,课设还没有开始整。于是懒癌发作,碍于身上还有比赛的作品没交,本菜鸡对硬件也没啥天赋,所以就直接把题目切换成软件方面的题目。写python的同学选择了一个时间序列数据的可视化曲线程序设计题目,果真python在数据可视化这一点性能很优秀。..._echarts 时间序列
文章浏览阅读1.6k次。事件类:/** * * * @className: EarlyWarnPublishEvent * * @description:数据风险预警发布事件 * * @param: * * @return: * * @throws: * * @author: lizz * * @date: 2020/05/06 15:31 * */public cl..._applicationeventpublisheraware
文章浏览阅读1.2k次。如需转载请注明出处!点击小图片转到图片查看的页面在Android开发中很常用到,抱着学习和分享的心态,在这里写下自己自定义的一个ImageView,可以实现类似微信朋友圈中查看图片的功能和效果。主要功能需求:1.缩放限制:自由缩放,有最大和最小的缩放限制 2居中显示:.若图片没充满整个ImageView,则缩放过程将图片居中 3.双击缩放:根据当前缩放的状态,双击放大两倍或缩小到原来 4.单指_imageview图片边界回弹
文章浏览阅读5.5k次,点赞8次,收藏37次。为了自己和他人学习的需要,建了一个PreScan的QQ群:613469333(已满)/ 778225322(可加),加群前请私聊群主(QQ:2059799865)加入。群管理需要花费时间和精力,为了鼓励管理员和群成员积极互动,入群需交¥9.99的群费。目录1 Conventions坐标系统2 Roads3 Path&trajectories路径和轨迹3.1 Pat..._prescan坐标系
文章浏览阅读3.8w次,点赞9次,收藏10次。1. css3简介CSS 用于控制网页的样式和布局,CSS3 是最新的CSS标准,CSS3 完全向后兼容,因此您不必改变现有的设计。浏览器通常支持 CSS2,但是现在大部分浏览器也实现了css3的很多特性。CSS3 被划分为模块。其中最重要的 CSS3 模块包括:选择器框模型背景和边框文本效果2D/3D 转换动画多列布局用户界面2. css3边框2.1 边框圆角Internet Explorer 9+ 支持 border-radius 和 box-shadow 属性。Fir_采用css转换,边框阴影等新特性完成css3偏光图像画廊设计
文章浏览阅读47次。定义:允许将对象组成树形结构来表现 “整体/部分” 层次结构。组合能让客户以一致的方式处理个别对象及对象组合。说白了,就是类似于树形结构。 只是它要求子节点和父节点都具备统一的接口。类图如下:示例如下:比如我们常见的电脑上的目录,目录下面有文件夹,也有文件,然后文件夹里面还有文件及文件夹。这样一层层形成了树形结构。示例代码如下:#include <iostream>#include <stdio.h>#include "string"#includ..