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

用备案的网站做违法网站小程序源码反编译

用备案的网站做违法网站,小程序源码反编译,wordpress获取访问位置,做网站开发 甲方提供资料c中的对齐问题 需要对齐的原因 尽管内存是以字节为单位#xff0c;但是大部分处理器并不是按字节块来存取内存的.它一般会以双字节,四字节,8字节,16字节甚至32字节为单位来存取内存#xff0c;我们将上述这些存取单位称为内存存取粒度. 现在考虑4字节存取粒度的处理器取in…c中的对齐问题 需要对齐的原因 尽管内存是以字节为单位但是大部分处理器并不是按字节块来存取内存的.它一般会以双字节,四字节,8字节,16字节甚至32字节为单位来存取内存我们将上述这些存取单位称为内存存取粒度. 现在考虑4字节存取粒度的处理器取int类型变量32位系统该处理器只能从地址为4的倍数的内存开始读取数据。 假如没有内存对齐机制数据可以任意存放现在一个int变量存放在从地址1开始的联系四个字节地址中该处理器去取数据时要先从0地址开始读取第一个4字节块,剔除不想要的字节0地址,然后从地址4开始读取下一个4字节块,同样剔除不要的数据567地址,最后留下的两块数据合并放入寄存器.这需要做很多工作. 对齐的规则 有效对齐值是 #pragma pack(n)和结构体中最长数据类型长度中较小的那个。有效对齐值也叫对齐单位。 注意 #pragma pack(n)中的n可以取(1 , 2 , 4 , 8 , 16)中的任意一值。 2规则 结构体变量的首地址是有效对齐值对齐单位的整数倍。 结构体第一个成员的偏移量offset为0以后每个成员相对于结构体首地址的 offset 都是该成员大小与有效对齐值中较小那个的整数倍如有需要编译器会在成员之间加上填充字节。 结构体的总大小为有效对齐值的整数倍如有需要编译器会在最末一个成员之后加上填充字节。 结构体内类型相同的连续元素将在连续的空间内和数组一样。 运用上面的规则下面通过实际的例子进行计算。 例1 #include iostreamstruct MyStruct {char c;int i;short s; };int main() {MyStruct obj;std::cout start addr of obj (void*)obj std::endl;std::cout offset of c offsetof(MyStruct,c) std::endl;std::cout offset of i offsetof(MyStruct,i) std::endl;std::cout offset of s offsetof(MyStruct,s) std::endl;std::cout sizeof MyStruct sizeof(MyStruct); }执行结果如下 start of obj 0x7fff2e8d1e94 offset of c 0 offset of i 4 offset of s 8 sizeof MyStruct 12结构中最长的数据类型是int长度也为4。因此结构体的有效对齐值是4。 对于c变量而言没有悬念将排在0偏移地址处。 对于变量i类型为int长度为4int和有效对齐值的最小值为4因此i需要排布在4的整数倍上因此第一个符合要求的偏移量就是4。 对于变量s类型为short长度为2short和有效对齐值二者中的最小值为2第一个符合要求的地址为8。 到目前为止使用的空间大小是10而结构体大小需要满足有效对齐值的整数倍因此需要2个填充因此结构体最终大小是12。 例2 #include iostream #pragma pack(2) struct MyStruct {char c;int i;short s; };int main() {MyStruct obj;std::cout start addr of obj (void*)obj std::endl;std::cout offset of c offsetof(MyStruct,c) std::endl;std::cout offset of i offsetof(MyStruct,i) std::endl;std::cout offset of s offsetof(MyStruct,s) std::endl;std::cout sizeof MyStruct sizeof(MyStruct); }执行结果如下 start addr of obj 0x7fff488e3418 offset of c 0 offset of i 2 offset of s 6 sizeof MyStruct 8首先#pragma pack设置的对齐值是2结构中最长的数据类型是int长度也为4。因此结构体的有效对齐值是2。 对于c变量而言没有悬念将排在0偏移地址处。 对于变量i类型为int长度为4int和有效对齐值的最小值为2因此i需要排布在2的整数倍上因此第一个符合要求的偏移量就是2。 对于变量s类型为short长度为2short和有效对齐值二者中的最小值为2第一个符合要求的地址为6。 到目前为止使用的空间大小是8已经满足结构体大小是有效对齐值的整数倍的要求。 #include iostream #pragma pack(1) struct MyStruct {char c;int i;short s; };int main() {MyStruct obj;std::cout start addr of obj (void*)obj std::endl;std::cout offset of c offsetof(MyStruct,c) std::endl;std::cout offset of i offsetof(MyStruct,i) std::endl;std::cout offset of s offsetof(MyStruct,s) std::endl;std::cout sizeof MyStruct sizeof(MyStruct); }执行结果如下 start addr of obj 0x7ffe96c067a9 offset of c 0 offset of i 1 offset of s 5 sizeof MyStruct 7首先#pragma pack设置的对齐值是1结构中最长的数据类型是int长度也为4。因此结构体的有效对齐值是1。 对于c变量而言没有悬念将排在0偏移地址处。 对于变量i类型为int长度为4int和有效对齐值的最小值为因此i需要排布在2的整数倍上因此第一个符合要求的偏移量就是1。 对于变量s类型为short长度为2short和有效对齐值二者中的最小值为2第一个符合要求的地址为5。 到目前为止使用的空间大小是7已经满足结构体大小是有效对齐值的整数倍的要求。 例4 #include iostream #include emmintrin.hstruct MyStruct {char c;__m128i i; };int main() {MyStruct obj;std::cout start addr of obj (void*)obj std::endl;std::cout offset of c offsetof(MyStruct,c) std::endl;std::cout offset of i offsetof(MyStruct,i) std::endl;std::cout sizeof MyStruct sizeof(MyStruct); }执行结果如下 start addr of obj 0x7fff9d47cd90 offset of c 0 offset of i 16 sizeof MyStruct 32首先结构中最长的数据类型是__m128i长度为16。因此结构体的有效对齐值是16。 对于c变量而言没有悬念将排在0偏移地址处。 对于变量i类型为__m128i长度为16__m128i和有效对齐值的最小值为16因此i需要排布在2的整数倍上因此第一个符合要求的偏移量就是16。 例5 #include iostream #include emmintrin.h#pragma pack(8) struct MyStruct {char c;__m128i i; };int main() {MyStruct obj;std::cout start addr of obj (void*)obj std::endl;std::cout offset of c offsetof(MyStruct,c) std::endl;std::cout offset of i offsetof(MyStruct,i) std::endl;std::cout sizeof MyStruct sizeof(MyStruct); }执行结果如下 start addr of obj 0x7ffddbec2c40 offset of c 0 offset of i 8 sizeof MyStruct 24首先#pragma pack设置的对齐值是8结构中最长的数据类型是__m128i长度为16。因此结构体的有效对齐值是8。 对于c变量而言没有悬念将排在0偏移地址处。 对于变量i类型为__m128i长度为16__m128i和有效对齐值的最小值为8因此i需要排布在2的整数倍上因此第一个符合要求的偏移量就是8。 总结 为了高效的访问内存数据通常需要对内存数据进行对齐。#pragma pack(n)用于设置的对齐有效值如果设置比结构体的最长成员还大的对齐值将是无效的。
http://www.hkea.cn/news/14560985/

相关文章:

  • 博客网站做外贸可以吗电子商务热门岗位
  • 哈尔滨速成网站建设找电子产品组装代加工
  • 微信公众号不能上传wordpress上海做seo
  • 自己可以做拼单网站吗餐厅装修
  • 个人网站源码下载网站建设基本流程规范
  • 网站制作网免费软件开发培训it培训哪个好
  • 网站建设费用核算科目code snippet wordpress
  • 聚民网网站建设网站设计与开发怎么做
  • 河南宝盈建设工程有限公司网站南京网站改版
  • 广州新塘做网站上海做网站的公司
  • 企业网站推广方法实验报告图书馆网站建设与评价研究
  • 网站后台数据应该怎么做17网一起做网店网站
  • 免费在线观看电影网站网站seo是什么
  • 仿糗事百科网站绵阳网站关键词
  • 开发h5网站开发jsp网站开发实例教程
  • html5网站开发课题设计wordpress api python
  • 产品宣传型企业网站怎么建设黄平网站建设
  • 西安的网站建设网站建设及使用
  • 图片在线制作网站展示型网站一样做seo优化吗
  • 我的网站为什么打不开网站如何做视频点播
  • 杭州手机网站制作电脑公司如何免费创建个人网站
  • 聚美优品网站设计广州网站建设与实验
  • e通网网站建设淮南市住房与城乡建设部网站
  • dedecms农业种植网站模板青岛推广信息
  • 大型门户网站开发长春
  • 跟做网站相关的法律专用于做网站公司
  • 中国空间站即将建成中英文免费网站建设
  • 政务网站的建设原则辽宁网站建设
  • 什么是网站开发公司电话跆拳道东莞网站建设
  • 医院网站后台管理系统登录wordpress商城 微信支付