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 ...
随机推荐
- Eclipse界面简介
下载安装完成后,Eclipse的界面如下: (6)为eclipse的perspective(视图方案)由于安装的是for Java development的eclipse,故视图界面默认 为使用Jav ...
- hdu-2063-过山车(匈牙利算法)
过山车 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找 ...
- 8.4 C++标准输入流
参考:http://www.weixueyuan.net/view/6410.html 总结: 所谓标准输入是指从标准输入设备中输入设备,通常来讲我们可以将标准输入设备理解为键盘. cin是标准输入类 ...
- 基于UVM的verilog验证(转)
reference:https://www.cnblogs.com/bettty/p/5285785.html Abstract 本文介绍UVM框架,并以crc7为例进行UVM的验证,最后指出常见的U ...
- mybatis 插入空值时报错 TypeException
报错内容:nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ...
- Java基础学习-Collection
package Collection; import java.util.ArrayList; import java.util.Scanner; /*集合类的特点: * 大小可变 * * Array ...
- 五、LCD屏填充纯色
废话不说,直接上代码: lcd.c #include "lcd.h" static int PEN_COLOR = LCD_RED; /* 定义画笔(前景)颜色 */ static ...
- shell脚本实例-case 删除用户判断的小案例
#!/usr/bin/bash read -p "Please input a username:" user id $user &>/dev/null if [ $ ...
- mysql的sql语句的性能诊断分析
1> explain SQL,类似于Oracle中explain语句 例如:explain select * from nad_aditem; 2> select benchmark(co ...
- 在Intellij IDEA中修改模板中user变量名称
在Intellij IDEA中的注释模板中的${user}名称是根据当前操作系统的登录名来取的,有时候登录名称和我们实际的user名称并不相同. 修改方法如下: 方法一:可以在settings的fil ...