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

自己做网站详细步骤保定网站建设方案优化

自己做网站详细步骤,保定网站建设方案优化,wordpress主题动态,百度推广平台登录网址程序如下#xff0c;第一种方式是强制指针转换#xff0c;再取结构体成员#xff1b;第二种方式是简单的移位。前面这种写法得考虑大小端序, 后者不用管.#include stdio.h#define hi8(x) ((( struct { unsigned char l; unsigned char h; } *)(x))-h) …程序如下第一种方式是强制指针转换再取结构体成员第二种方式是简单的移位。前面这种写法得考虑大小端序, 后者不用管.#include stdio.h#define hi8(x) ((( struct { unsigned char l; unsigned char h; } *)(x))-h) #define lo8(x) ((( struct { unsigned char l; unsigned char h; } *)(x))-l) #define hi8a(x) (((x) 8) 0xff) #define lo8a(x) ((x) 0xff)int main(void) {unsigned short x;scanf(%4x, x); // 不能用字面量测试, 否则-Os编译时会直接给求值了printf(%2X %2Xn, hi8(x), lo8(x));printf(%2X %2Xn, hi8a(x), lo8a(x));return 0; }分别用mingw-gcc, arm-none-eabi-gcc -O0和-Os选项编译得到的汇编如下(只取scanf到第二次printf之间的部分)mingw-gcc, -O0, 前者9条指令, 后者10条指令. 有点呆萌是吧... call _scanflea eax, [esp30]movzx eax, BYTE PTR [eax]movzx edx, allea eax, [esp30]movzx eax, BYTE PTR [eax1] ; 这里错开1字节取值movzx eax, almov DWORD PTR [esp8], edxmov DWORD PTR [esp4], eaxmov DWORD PTR [esp], OFFSET FLAT:LC1 ; LC1是printf的格式字符串call _printfmovzx eax, WORD PTR [esp30]movzx eax, axmovzx edx, almovzx eax, WORD PTR [esp30]shr ax, 8 ; 移位movzx eax, axmovzx eax, almov DWORD PTR [esp8], edxmov DWORD PTR [esp4], eaxmov DWORD PTR [esp], OFFSET FLAT:LC1call _printfmingw-gcc, -Os, 前者5条指令, 后者6条指令. call _scanfmovzx eax, BYTE PTR [esp30]mov DWORD PTR [esp], OFFSET FLAT:LC1 ; 常量入栈提到前面了mov DWORD PTR [esp8], eaxmovzx eax, BYTE PTR [esp31] ; 取值错开1字节mov DWORD PTR [esp4], eaxcall _printfmov ax, WORD PTR [esp30]mov DWORD PTR [esp], OFFSET FLAT:LC1movzx edx, almovzx eax, ah ; 这次把移位优化掉了, 直接利用ax寄存器的高低位.mov DWORD PTR [esp8], edxmov DWORD PTR [esp4], eaxcall _printfarm-none-eabi-gcc, -O0, 前者8条指令, 后者10条指令: bl scanfsub r3, fp, #6ldrb r3, [r3, #1] zero_extendqisi2mov r2, r3sub r3, fp, #6ldrb r3, [r3] zero_extendqisi2 ; 错开1字节ldr r0, .L34 ; .L34是printf的格式字符串mov r1, r2mov r2, r3bl printfldrh r3, [fp, #-6]mov r3, r3, lsr #8mov r3, r3, asl #16mov r3, r3, lsr #16and r2, r3, #255ldrh r3, [fp, #-6]and r3, r3, #255ldr r0, .L34mov r1, r2mov r2, r3bl printfarm-none-eabi-gcc, -Os, 这个清爽多了, 前者3条指令, 后者4条指令. bl scanfldrb r1, [sp, #7] zero_extendqisi2ldrb r2, [sp, #6] zero_extendqisi2 ; 错开1字节mov r0, r4 ; .L34被提前放进r4了bl printfldrh r1, [sp, #6]mov r0, r4mov r1, r1, lsr #8 ; 移位ldrb r2, [sp, #6] zero_extendqisi2bl printfavr-gcc呢, 太长就不贴了. 不过-Os时反倒是移位方式的指令更少.总之以上四种情况都是前者好些. 不过实际运行时也不一定, 没准后者更快呢?----------------2020.2.22补充-------------------还有一个重要的区别前者可以作为左值后者不行。如下程序#include stdio.h#define hi8(x) ((( struct { unsigned char l; unsigned char h; } *)(x))-h) #define lo8(x) ((( struct { unsigned char l; unsigned char h; } *)(x))-l) int main(void) {unsigned short x 0x1234;hi8(x)--;lo8(x);printf(%xn, x);return 0; } 运行结果是1135。
http://www.zqtcl.cn/news/412206/

相关文章:

  • 网站平台都有哪些wordpress 主题制作 视频
  • 中山网站建设方案家具网站开发目的
  • 教师个人网站建设建模培训多少钱
  • 个人网站可以做社交类型网站建设功能说明书
  • 微站是什么移动网站 拉新
  • 黑龙江省农业网站建设情况wordpress4.94主题上传不显示
  • 个人网站的域名重庆建立公司网站
  • 什么做网站做个多少钱啊百度网盘app
  • 做网站的公司挣钱吗石家庄房产
  • 烟台网站建设设计公司安徽建设工程信息网查询平台蔡庆树
  • 微信链接的微网站怎么做西安企业网站制作价格
  • uniapp怎么做淘客网站表格布局的网站
  • wordpress侧栏图片插件提升seo搜索排名
  • 如何查询网站的域名注册邹城建设银行网站
  • 招生门户网站建设方案国家企业信用信息公示信息查询网
  • 用dw做淘客网站的步骤移动互联网应用技术
  • 企业合作的响应式网站石家庄网站建设推广
  • 成都网站排名优化开发广告传媒公司简介模板
  • 中山网站建设企业网站内容建设
  • 免费网站建站页面wordpress的主题在哪个文件夹
  • 国企网站建设要求站长之家排行榜
  • 做视频网站利润如何处理旅游电子商务网站建设技术规范
  • 做网站架构网页浏览器怎么卸载
  • 做甜品的网站网页传奇游戏排行榜比亚迪
  • 广州网站建设菲利宾百度关键词优化排名
  • 南昌网站建设业务wordpress添加购买按钮
  • 个人现在可以做哪些网站企业所得税是多少
  • 网站建设招标信息科技企业网站建设
  • 怎样弄网站站长工具综合查询
  • 表白网站在线制作软件合肥seo按天收费