C166 8位字节位运算赋值-代码优化
8位字节位运算赋值优化特记录下:
unsigned short func1()
{
unsigned short a;
return a;
}
unsigned char func2()
{
unsigned char a;
return a;
}
unsigned short u_16;
unsigned char u_8;
void sub_027F08()
{
UINT8 t8u;
// ERAM_u16_81F48 = ((sub_035EC8() == 0) & 1) <<14 | (ERAM_u16_81F48 & (~(1<<14)));
// ERAM_u8_81F64 = (FDC_INT8U)(((FDC_INT8U)sub_032AE4() != 0) & 1) << 6 | (FDC_INT8U)(ERAM_u8_81F64 & (~(1<< 6)));
u_16 = ((func1() == 0) & 1)<<14 | (u_16 & (~(1<<14)));
// u_8 = ((func1() == 0) & 1)<<14 | (u_8 & (~(1<<14)));
t8u = (func1() == 0) ? (UINT8)1: (UINT8)0;
t8u &= 1;
t8u <<= 6;
u_8 =(UINT8)t8u | (UINT8)(u_8 & (UINT8)(~(1<<6)));
return;
}
结果如下:
1264: t8u = (func1() == 0) ? (UINT8)1: (UINT8)0;
00027F34 DA02087F CALLS func1(0x27F08)
00027F38 E10A MOVB RL5,#0x00
00027F3A 4840 CMP R4,#0
00027F3C 3D01 JMPR CC_NZ,0x027F40
00027F3E E11A MOVB RL5,#0x01
1265: t8u &= 1;
00027F40 69A1 ANDB RL5,#1
1266: t8u <<= 6;
00027F42 5C65 SHL R5,#0x06
1267: u_8 =(UINT8)t8u | (UINT8)(u_8 & (UINT8)(~(1<<6)));
1268:
00027F44 F3F8D805 MOVB RL4,DPP0:0x05D8
00027F48 67F8BF00 ANDB RL4,#0x00BF
00027F4C 718A ORB RL4,RL5
00027F4E F7F8D805 MOVB DPP0:0x05D8,RL4
1269: return;
00027F52 DB00 RETS
C166 8位字节位运算赋值-代码优化的更多相关文章
- JAVA基础1——字节&位运算
占用字节数 & 取值范围 Java一共有8种基本数据类型(原始数据类型): 类型 存储要求 范围(包含) 默认值 包装类 int 4字节(32位) -2^31~ 2^31-1 0 Intege ...
- C#中的位的或运算的理解
如果懂位的运算,看到下面这2个程序执行的结果,会很容易理解,如果像我这样的菜鸟,刚接触开始肯定也觉得晕晕的,|= 这是什么运算符? |=就是位的或运算符,下面还是用上面的程序来讲解一下,为什么上面2个 ...
- 【最新】LuaJIT 32/64 位字节码,从编译到使用全纪录
网上关于 LuaJIT 的讨论,已经显得有些陈旧.如果你对 LuaJIT 编译 Lua 源文件为具体的 32位或64位字节码,极其具体使用感兴趣的话,不妨快速读一下这篇文章.此文章针对尝试在 iOS ...
- Qt 4.5发布(最大的变动是换用LGPL许可证,移植进了苹果的Cocoa框架。之前的Qt只支持Carbon框架,现在的Qt 4.5两者都支持。单一源代码创建出支持32位或64位字节的Intel或PowerPC Mac二进制文件)
Nokia的开源Qt开发工具正式发布了4.5版.如前所述,Qt 4.5最大的变动是换用LGPL许可证,目前采用的三个许可证分别为LGPL/GPL和商业许可证. 新版 ...
- C++:用字符串数组实现大数运算,以两个不高于40位的大数运算为例。
因为基本数据类型中整型的内存范围有限,所以直接进行大数之间的运算,不仅浪费空间,而且运行缓慢,甚至有些会导致数据溢出. 那怎么办呢? 这时我们就想直接不行,那咱们来间接的. 这就是我们今天主要要讲的: ...
- MD5、SHA1加密java 16位32位
MD5.SHA1加密java 16位32位 import java.math.BigInteger; import java.security.MessageDigest; public class ...
- JAVA如何把一个float四舍五入到小数点后2位,4位,或者其它指定位数.
怎么使float保留两位小数或多位小数 http://meryvn.blog.163.com/blog/static/36962664201173010402629/ 两种方法: import j ...
- [转载]使用32位64位交叉编码混淆来打败静态和动态分析工具 - wildsator
0×00 摘要 混淆是一种能增加二进制分析和逆向工程难度与成本的常用技术.主流的混淆技术都是着眼于使用与目标CPU相同的机器代码,在相同的处理器模式下,隐藏代码并进行控制.本文中引入了一种新的混淆方法 ...
- dll文件32位64位检测工具以及Windows文件夹SysWow64的坑
自从操作系统升级到64位以后,就要不断的需要面对32位.64位的问题.相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program Files (x86),Program Files的区别 ...
随机推荐
- day 30 客户端获取cmd 命令的步骤
import subprocessimport structimport jsonfrom socket import *server=socket(AF_INET,SOCK_STREAM)serve ...
- shell脚本实例-while实现批量创建用户
#!/usr/bin/bash while read line #读取一行结果 do if [ ${#line} -eq 0 ];then #如果有空行的话就跳过这次循环 contiune fi us ...
- 选择器(&伪)/盒模型
一.选择器高级 1.组合选择器: /*群主选择器 : 同时可以控制多个选择器*/ /*#dd,div,#a{}*/ /* d{ 起相同类名 color: red; }*/ 举例: .d1,.d2,.d ...
- LimeSDR Getting Started Quickly | LimeSDR上手指南
0x00 概览 LimeSDR部分特性: USB 3.0 : 4 x Tx 发射天线接口 6 x Rx 接收天线接口: 可用于Wi-Fi, GSM, UMTS, LTE, LoRa, Bluetoot ...
- 关于lunece的搜索的分页和多字段搜索关键词
关于全文检索lunece的分页,我们需要用到的是以下方法 IndexSearch类下的searchAfter方法. IndexSearch isearch=new IndexSearch(a); is ...
- Maven Speed Up
收录架构 proxy代理仓库 不支持仓库搜索功能 收录版本 所有版本 更新时间 每24小时更新一次 使用说明 一.在maven软件中使用 以Maven 3.5.2为例: 打开maven配置文件 ./a ...
- Python 数据共享
import time from multiprocessing import Process,Manager,Lock # a = 10 # # tmp = a # # tmp -= 1 # # a ...
- Kesci: Keras 实现 LSTM——时间序列预测
博主之前参与的一个科研项目是用 LSTM 结合 Attention 机制依据作物生长期内气象环境因素预测作物产量.本篇博客将介绍如何用 keras 深度学习的框架搭建 LSTM 模型对时间序列做预测. ...
- ubuntu discuz 该函数需要 PHP 支持 XML。请联系空间商,确定开启了此项功能
apt-get install php-xml apt-get install php-xml-parser
- Gym.101955: Asia Shenyang Regional Contest(寒假自训第10场)
C.Insertion Sort 题意:Q次询问,每次给出N,M,Mod,问你有多少种排列,满足前面M个数字排序之后整个序列的LIS>=N-1. 思路:我们把数字看成[1,M],[N-M+1,N ...