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

清远市住房与城乡建设局的网站查网站开发需要会什么

清远市住房与城乡建设局的网站查,网站开发需要会什么,阿里ace 安装wordpress 并修改,能下短视频网站做牙在Linux内核中,有两个罕见的宏定义_RET_IP_ 和_THIS_IP_。但是这两个宏在内核代码中又时不时的出现#xff0c;那么它们到底是什么含义呢? 1、宏定义 我们先看它们的宏定义 include./linux/kernel.h#define _RET_IP_ (unsigned long)__builtin_return_address(0)#define …在Linux内核中,有两个罕见的宏定义_RET_IP_ 和_THIS_IP_。但是这两个宏在内核代码中又时不时的出现那么它们到底是什么含义呢? 1、宏定义 我们先看它们的宏定义 include./linux/kernel.h#define _RET_IP_ (unsigned long)__builtin_return_address(0)#define _THIS_IP_ ({ __label__ __here; __here: (unsigned long)__here; }) 我们先看_RET_IP_的含义: #define _RET_IP_ (unsigned long)__builtin_return_address(0) 其中__builtin_return_address(0) 是gcc内建函数,返回函数的返回地址。所以_RET_IP_ 宏定义用于返回当前函数的返回地址(当前函数被调用处的地址)。 在看看_THIS_IP_的含义: #define _THIS_IP_ ({ __label__ __here; __here: (unsigned long)__here; }) __lable__ 是gcc对c语言的扩展,用于局部标签,__label__ __here; 声明了一个局部标签__here。 什么是局部标签? GCC allows you to declare local labels(局部标签) in any nested block scope.A local label is just like an ordinary label, but you can only reference it (with a goto statement, or by taking its address) within the block in which it is declared. 一个局部标签只是一个标识符可以使用通常的goto语句进行跳转或者获取其地址,但是只能在其所属的域内内。 A local label declaration looks like this:(局部标签定义如下:) __label__ label; or __label__ label1, label2, /* … */; You can get the address of a label defined in the current function (or a containing function) with the unary operator ‘’.The value has type void *. 我们可以通过符号来获取局部标签的地址(获取变量的地址是)地址类型为void *. #define _THIS_IP_ ({ __label__ __here; __here: (unsigned long)__here; }) 先定义了一个局部标签 __here后面是__here标签的内容,和我们使用goto语句时的标签的用法是一样的,  __here: (unsigned long)__here; 返回局部标签__here所在位置的地址。所以_THIS_IP_返回当前位置的地址(PC指针的值)。 内核中有个专门返回当前代码段的地址的宏定义: #define current_text_addr() ({ __label__ _l; _l: _l;}) 和_THIS_IP_的宏定义是一样的。 2、测试 下面我们写个简单的程序测试下 #include stdio.h #include stdlib.h#define _RET_IP_ (unsigned long)__builtin_return_address(0)#define _THIS_IP_ ({ __label__ __here; __here: (unsigned long)__here; })void bar(void) {/*This is bar (400551,40052a) */printf(This is bar (%x,%x) \012,_RET_IP_,_THIS_IP_);return ; }int main() {bar();return 0; }上面程序输出结果是:This is bar (400551,40052a) 我们将上面程序反汇编结果如下 0000000000400526 bar: 400526: 55 push %rbp 400527: 48 89 e5 mov %rsp,%rbp 40052a: ba 2a 05 40 00 mov $0x40052a,%edx 40052f: 48 8b 45 08 mov 0x8(%rbp),%rax 400533: 48 89 c6 mov %rax,%rsi 400536: bf e4 05 40 00 mov $0x4005e4,%edi 40053b: b8 00 00 00 00 mov $0x0,%eax 400540: e8 bb fe ff ff callq 400400 printfplt 400545: 90 nop 400546: 5d pop %rbp 400547: c3 retq 0000000000400548 main: 400548: 55 push %rbp 400549: 48 89 e5 mov %rsp,%rbp 40054c: e8 d5 ff ff ff callq 400526 bar 400551: b8 00 00 00 00 mov $0x0,%eax 400556: 5d pop %rbp 400557: c3 retq 400558: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 40055f: 00 _RET_IP_的打印结果是400551,但是调用bar函数的地址是40054c。由于流水线的原因,取指完成后PCPC4,所以_RET_IP_的值为400551. _THIS_IP_的打印结果是40052a,该地址是printf打印中_THIS_IP_入栈时的地址值。 上面的打印结果和我们理解的结果是一致的。
http://www.hkea.cn/news/14533601/

相关文章:

  • 打电话做网站的话术江西哪家网站建设公司好
  • 网站定位分析织梦网站模板本地安装教程
  • 湖南网站设计外包费用聊城网站建设动态
  • 高端网站建设注意塘厦仿做网站
  • 成都关键词自然排名临沂seo推广
  • 天河做网站哪家好东京购物
  • 网站被k查询工程造价信息网如何进入
  • 模仿京东商城网站开发视频网站模板参考
  • 有教做桥梁质检资料的网站吗简洁个人博客网站模板下载
  • 网站开发人员工资水平制作网站建设
  • 网站除了域名还要什么用有域名如何建设网站
  • 160 作者 网站建设建网站要多长时间
  • 如何采集网站文章国外 网站源码
  • 成都做网站设计哪家好有做美食的视频网站么
  • 重庆智慧团建网站登录平台咖啡厅网站开发目标
  • 网站后台fpt中国网站
  • 工信部网站域名查询怎么制作wordpress主题
  • 网站设计开发文档模板下载做网站搞笑口号
  • 电子商务网站建设合同范本佛山网页设计培训
  • 惠州微网站推广方案免费的网站建设一般多少钱
  • 企业网站免费认证wordpress对接微信登录
  • 网站制作网站开发媒体资源
  • 做网站诊断步骤企业网站建站价格
  • 青岛网站备案html网页制作视频教学
  • 制作公司网站步骤wordpress 外贸 开发
  • 网站导航容易做seo推广排名公司
  • 仿卢松松博客网站源码网站集约化建设启示和建议
  • 上海景泰建设股份有限公司网站温州网站建设及推广
  • 平度那里有做网站的赣icp南昌网站建设
  • 服务器上的网站打不开重庆彼客的网站是谁家做的