Using pointer to access array instead of index
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的更多相关文章
- C lang:Pointer and multidimensional array
Xx_Introduction Double indrection:Address of Address;Pointer of Pointer Ax_Code #include<stdio.h& ...
- java数据结构--线性结构
一.数据结构 数据结构由数据和结构两部分组成,就是将数据按照一定的结构组合起来,这样不同的组合方式有不同的效率,可根据需求选择不同的结构应用在相应在场景.数据结构大致 分为两类:线性结构(如数组,链表 ...
- Go: using a pointer to array
下面的不是指针指向数组,而是指针指向Slice I'm having a little play with google's Go language, and I've run into someth ...
- 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 ...
- 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 ...
- Array类
class Array Arrays are ordered, integer-indexed collections of any object. Array indexing starts at ...
- 【题解】【数组】【查找】【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 ...
- 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 ...
- golang ----array and slice
Go Slices: usage and internals Introduction Go's slice type provides a convenient and efficient mean ...
随机推荐
- fastIO
文件系统除了处理正常的IRP 之外,还要处理所谓的FastIo.FastIo是Cache Manager 调用所引发的一种没有irp 的请求.换句话说,除了正常的Dispatch Functions ...
- 数控AGC实现(转)
相关链接: 一种混合式高动态范围AGC算法与FPGA实现 http://www.sohu.com/a/221438387_781333 基于FPGA的快速自动增益控制系统设计 ...
- Intellij IDEA生成foreach或者loop 快捷键
iter Iterate (for each..in) itin Iterate (for..in) itli Iterate over a List itar Iterate elements of ...
- 自定义ListView 、GradView 重写onMeasure方法让其正确显示
1 继承原始的 2 重写onMeasure方法 @Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpe ...
- gmtdefaults locate
http://seisman.blog.ustc.edu.cn/index.php/archives/553
- 循环神经网络-Dropout
dropout 是 regularization 方法,在rnn中使用方法不同于cnn 对于rnn的部分不进行dropout,也就是说从t-1时候的状态传递到t时刻进行计算时,这个中间不进行memor ...
- SpringMVC学习一
先看SpringMVC的视图解析 以及 摘录自http://www.cnblogs.com/HigginCui/p/5856780.html的架构解析 1.DisPatcherServlet:前 ...
- <Hadoop><SequenceFile><Hadoop小文件>
Origin 我们首先理解一下SequenceFile试图解决什么问题,然后看SeqFile怎么解决这些问题. In HDFS 序列文件是解决Hadoop小文件问题的一个方法: 小文件是显著小于HDF ...
- linux之ls、ll
ls == list,根据不同的选项,列举指定目录或文件的相关信息,是Unix/Linux下最常用的命令之一,cd到某一目录下后执行的第一个命令. ls命令格式:ls [OPTION]... [FIL ...
- 【Python】多进程-队列
#练习:队列 from multiprocessing import Process, Queue def offer(queue): # 入队列 queue.put("Hello Worl ...