ARM 系统高效C编程——C编译器及优化概述
来源:互联网 发布:小米3怎样才可以4g网络 编辑:程序博客网 时间:2024/06/08 02:44
看一个例子, 把从地址data 开始的N个字节的内容置0:
void memclr(char *data, int N)
{
for(;N>0; N --)
{
*data = 0;
data ++;
}
}
首先, 编译器无论多高级,也不可能知道 N 的输入是否可以是 0。 因此, 在第一个循环开始之前,编译器需要对这个问题进行明确的确定。
其次,编译器也不知道数组指针data是否4字节对齐, 如果是,那么编译器就可以使用int 而不是char 类型的指针, 这样可以一次写4个byte 而不是1个byte。而且编译器也不知道 N 是不是4 的整数倍,如果是,那个编译器就可以重复循环体中的内容4次或者利用int 类型的指针一次写4个byte.
然而编译器必须是保守的,只能假定N的所有可能的值和data所有可能的边界值。
- ARM 系统高效C编程——C编译器及优化概述
- ARM高效C编程和优化--编译器,内存和Cache优化以及功耗管理
- ARM高效C编程和优化--系统架构,C代码规范
- 基于ARM的嵌入式系统编程及相应的高效C编程
- ARM下高效C编程
- ARM下高效C编程
- 高效ARM C编程(中)
- 高效 ARM C编程(下)
- 基于ARM的高效C语言编程
- Arm设计思想与高效C编程
- Arm设计思想与高效C编程
- ARM设计思想与高效C编程
- Arm设计思想与高效C编程
- ARM设计思想与高效C编程
- 【转】ARM下高效C编程
- ARM设计思想与高效C编程
- 基于ARM的高效C语言编程
- ARM设计思想与高效C编程
- C/C++常见的不可饶恕的错误
- Microsoft .NET 简介
- Sybase IQ for Data Warehouse 总结
- .NET 构建模块(Building Blocks)
- .NET 软件
- ARM 系统高效C编程——C编译器及优化概述
- .NET Web Services
- java基础知识之 循环输出---欲罢不能“金字塔”
- C++数据结构 排序 二分 插入 冒泡 基数 归并 直选 快排 希尔 堆排序
- .NET 标准
- JPA中ManyToMany关系问题
- .net 服务
- 为什么需要htons(), ntohl(), ntohs(),htons() 函数
- .net 应用程序