see MSP430 coding example below.

   uint8_t parity = ;
uint8_t index = ;
//flag
gMUXTask.responseData[index++] = MUX_DATA_BIT_LOW;
//dirty
gMUXTask.responseData[index++] = gDeviceStatus.responseStatus.dirty;
parity += gDeviceStatus.responseStatus.dirty;
//smoke alarm
gMUXTask.responseData[index++] = gDeviceStatus.responseStatus.smokeAlarm;
parity += gDeviceStatus.responseStatus.smokeAlarm;
//high temperature
gMUXTask.responseData[index++] = gDeviceStatus.responseStatus.highTemperature;
parity += gDeviceStatus.responseStatus.highTemperature;
//low temperature
gMUXTask.responseData[index++] = gDeviceStatus.responseStatus.lowTemperature;
parity += gDeviceStatus.responseStatus.lowTemperature;
//miss Head
gMUXTask.responseData[index++] = gDeviceStatus.responseStatus.missHead;
parity += gDeviceStatus.responseStatus.missHead;
//parity
gMUXTask.responseData[index++] = CalcParity(isOddAlgorithm(false), parity);
//outputState
gMUXTask.responseData[index++] = MUX_DATA_BIT_LOW;

The ASM code generated is below, it is around 120bytes.

Another example here,

   uint8_t* p = gMUXTask.responseData;
*p++ = MUX_DATA_BIT_LOW;
//dirty
*p++ = gDeviceStatus.responseStatus.dirty;
parity += gDeviceStatus.responseStatus.dirty;
//smoke alarm
*p++ = gDeviceStatus.responseStatus.smokeAlarm;
parity += gDeviceStatus.responseStatus.smokeAlarm;
//high temperature
*p++ = gDeviceStatus.responseStatus.highTemperature;
parity += gDeviceStatus.responseStatus.highTemperature;
//low temperature
*p++ = gDeviceStatus.responseStatus.lowTemperature;
parity += gDeviceStatus.responseStatus.lowTemperature;
//miss Head
*p++ = gDeviceStatus.responseStatus.missHead;
parity += gDeviceStatus.responseStatus.missHead;
//parity
*p++ = CalcParity(isOddAlgorithm(false), parity);
//outputState
*p++ = MUX_DATA_BIT_LOW;

The ASM code generated, it is about 106 bytes.

Using pointer to access an array which has a better performance.

Using pointer to access array instead of index的更多相关文章

  1. C lang:Pointer and multidimensional array

    Xx_Introduction Double indrection:Address of Address;Pointer of Pointer Ax_Code #include<stdio.h& ...

  2. java数据结构--线性结构

    一.数据结构 数据结构由数据和结构两部分组成,就是将数据按照一定的结构组合起来,这样不同的组合方式有不同的效率,可根据需求选择不同的结构应用在相应在场景.数据结构大致 分为两类:线性结构(如数组,链表 ...

  3. Go: using a pointer to array

    下面的不是指针指向数组,而是指针指向Slice I'm having a little play with google's Go language, and I've run into someth ...

  4. c pointer and array

    Pointer:  A pointer is a variable that contains the address of a variable. if c is a char and p is a ...

  5. Twitter OA prepare: Equilibrium index of an array

    Equilibrium index of an array is an index such that the sum of elements at lower indexes is equal to ...

  6. Array类

    class Array Arrays are ordered, integer-indexed collections of any object. Array indexing starts at ...

  7. 【题解】【数组】【查找】【Leetcode】Search in Rotated Sorted Array

    Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...

  8. Return array from functions in C++

    C++ does not allow to return an entire array as an argument to a function. However, you can return a ...

  9. golang ----array and slice

    Go Slices: usage and internals Introduction Go's slice type provides a convenient and efficient mean ...

随机推荐

  1. fastIO

    文件系统除了处理正常的IRP 之外,还要处理所谓的FastIo.FastIo是Cache Manager 调用所引发的一种没有irp 的请求.换句话说,除了正常的Dispatch Functions ...

  2. 数控AGC实现(转)

    相关链接:    一种混合式高动态范围AGC算法与FPGA实现     http://www.sohu.com/a/221438387_781333 基于FPGA的快速自动增益控制系统设计      ...

  3. Intellij IDEA生成foreach或者loop 快捷键

    iter Iterate (for each..in) itin Iterate (for..in) itli Iterate over a List itar Iterate elements of ...

  4. 自定义ListView 、GradView 重写onMeasure方法让其正确显示

    1 继承原始的 2 重写onMeasure方法 @Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpe ...

  5. gmtdefaults locate

    http://seisman.blog.ustc.edu.cn/index.php/archives/553

  6. 循环神经网络-Dropout

    dropout 是 regularization 方法,在rnn中使用方法不同于cnn 对于rnn的部分不进行dropout,也就是说从t-1时候的状态传递到t时刻进行计算时,这个中间不进行memor ...

  7. SpringMVC学习一

    先看SpringMVC的视图解析    以及 摘录自http://www.cnblogs.com/HigginCui/p/5856780.html的架构解析 1.DisPatcherServlet:前 ...

  8. <Hadoop><SequenceFile><Hadoop小文件>

    Origin 我们首先理解一下SequenceFile试图解决什么问题,然后看SeqFile怎么解决这些问题. In HDFS 序列文件是解决Hadoop小文件问题的一个方法: 小文件是显著小于HDF ...

  9. linux之ls、ll

    ls == list,根据不同的选项,列举指定目录或文件的相关信息,是Unix/Linux下最常用的命令之一,cd到某一目录下后执行的第一个命令. ls命令格式:ls [OPTION]... [FIL ...

  10. 【Python】多进程-队列

    #练习:队列 from multiprocessing import Process, Queue def offer(queue): # 入队列 queue.put("Hello Worl ...