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位字节位运算赋值-代码优化的更多相关文章

  1. JAVA基础1——字节&位运算

    占用字节数 & 取值范围 Java一共有8种基本数据类型(原始数据类型): 类型 存储要求 范围(包含) 默认值 包装类 int 4字节(32位) -2^31~ 2^31-1 0 Intege ...

  2. C#中的位的或运算的理解

    如果懂位的运算,看到下面这2个程序执行的结果,会很容易理解,如果像我这样的菜鸟,刚接触开始肯定也觉得晕晕的,|= 这是什么运算符? |=就是位的或运算符,下面还是用上面的程序来讲解一下,为什么上面2个 ...

  3. 【最新】LuaJIT 32/64 位字节码,从编译到使用全纪录

    网上关于 LuaJIT 的讨论,已经显得有些陈旧.如果你对 LuaJIT 编译 Lua 源文件为具体的 32位或64位字节码,极其具体使用感兴趣的话,不妨快速读一下这篇文章.此文章针对尝试在 iOS ...

  4. 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和商业许可证.           新版 ...

  5. C++:用字符串数组实现大数运算,以两个不高于40位的大数运算为例。

    因为基本数据类型中整型的内存范围有限,所以直接进行大数之间的运算,不仅浪费空间,而且运行缓慢,甚至有些会导致数据溢出. 那怎么办呢? 这时我们就想直接不行,那咱们来间接的. 这就是我们今天主要要讲的: ...

  6. MD5、SHA1加密java 16位32位

    MD5.SHA1加密java 16位32位 import java.math.BigInteger; import java.security.MessageDigest; public class ...

  7. JAVA如何把一个float四舍五入到小数点后2位,4位,或者其它指定位数.

    怎么使float保留两位小数或多位小数 http://meryvn.blog.163.com/blog/static/36962664201173010402629/ 两种方法: import   j ...

  8. [转载]使用32位64位交叉编码混淆来打败静态和动态分析工具 - wildsator

    0×00 摘要 混淆是一种能增加二进制分析和逆向工程难度与成本的常用技术.主流的混淆技术都是着眼于使用与目标CPU相同的机器代码,在相同的处理器模式下,隐藏代码并进行控制.本文中引入了一种新的混淆方法 ...

  9. dll文件32位64位检测工具以及Windows文件夹SysWow64的坑

    自从操作系统升级到64位以后,就要不断的需要面对32位.64位的问题.相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program Files (x86),Program Files的区别 ...

随机推荐

  1. TensorFlow函数:tf.ones

    tf.ones 函数 ones( shape, dtype=tf.float32, name=None ) 定义于:tensorflow/python/ops/array_ops.py. 请参阅指南: ...

  2. jquery原理集合

    人生就是一场梦 完全理解jquery算的是...水平  (jquery常用方法) jQuery分析源码正确方法 详细分析jQuery2.0.3 new的原理 玩转jquery

  3. 2019-03-06-day012-生成器与推导式

    01 昨日回顾 迭代器: 迭代器有iter方法 next方法就是迭代器 递归: 自己调用自己 明确的结束条件 递归的最大深度 官方 1000 实际测试:998/997 import sys sys.s ...

  4. java学习笔记15(String 类,StringBuffer)

    /* * String类的特点: * 所有的""都是String的对象 * 字符串一旦创建就是常量,不能改变 */ public class StringDemo { public ...

  5. python day09--定义函数

    一.函数的定义 def  函数名(参数): 函数体 来我们来定义⼀一个约x功能: def yue(): print("拿出⼿手机") print("打开陌陌") ...

  6. mysqli扩展库的预处理

    预处理的特点:1.效率高,执行速度快 2.安全性高,可以防止sql注入 $mysqli  中的函数 $stmt=$mysqli->prepare($sql);             预备一条s ...

  7. Java技术体系

    Shell 解释型编程语言(脚本语言都是解释型语言) Shell通过解释器/bin/bash 解释,运行在进程中 Java 编译型解释型语言(先编译再解释) Java通过编译器转换成字节码语言,再用过 ...

  8. ECONOMETRICS CHAPTER3

    前几天看王垠的一篇文章谈数学与编程,说数学公式之所以难以理解是因为缺乏统一的形式,而且经常有未定义的变量出现.看这本书时也正有此感,所以有时不必要拘泥公式是否前后一致,理解意思要紧. ♣普通最小二乘法 ...

  9. 3D 网页,webgl ,threejs 实例

    http://learningthreejs.com/blog/2013/04/30/closing-the-gap-between-html-and-webgl/ http://adndevblog ...

  10. 剑指offer-面试题1:赋值运算符函数

    如下为类型CMyString的声明,请为该类型添加赋值运算符函数. 解析:给一个类进行运算符重载. 关键部分代码: CMyString& CMyString::operator =(const ...