Matrix653 数据类型

更新时间:
2023-11-16
下载文档

Matrix653 数据类型

本节将介绍 Matrix653 开发用到的基础数据类型和宏定义。本章详细定义在 mx_base_types.h, mx_internal.h, mx_arch.h 和 mx_arhc_assembler.h 中。

基础数据类型

类型描述
MX_INT88 位有符号整型
MX_UINT88 位无符号整型
MX_INT1616 位有符号整型
MX_UINT1616 位无符号整型
MX_INT3232 位有符号整型
MX_UINT3232 位无符号整型
MX_INT6464 位有符号整型
MX_UINT6464 位无符号整型
MX_BOOL布尔类型
MX_SIZE_TYPE32 位无符号大小类型
MX_SSIZE_TYPE32 位有符号大小类型

MX_BOOL

布尔类型,可取的值为以下的宏:

描述
MX_TRUE
MX_FALSE

其它数据类型

类型描述
MX_VIRT_ADDR_TYPE32/64 位虚拟地址类型
MX_VIRT_SIZE_TYPE32/64 位虚拟地址大小类型
MX_PHYS_ADDR_TYPE32/64 位物理地址类型
MX_PHYS_SIZE_TYPE32/64 位物理地址大小类型
MX_CPU_ID_TYPE32 位 CPU 核 ID 号类型

Matrix653 定义了部分常用宏:

描述
MX_NULL空指针值
MX_FORCE_INLINE强制内联函数
MX_BIT(bit)第 bit 位为 1 的数值
MX_ARRAY_SIZE(array)数组的大小
MX_MAX(a, b)最大值
MX_MIN(a, b)最小值
MX_ROUND_UP(x, align)向上圆整
MX_ROUND_DOWN(x, align)向下圆整
MX_GB1 GB 字节数
MX_MB1 MB 字节数
MX_KB1 KB 字节数
MX_NANOSEC_PER_SEC每秒的纳秒数
MX_NANOSEC_PER_MILLISEC每毫秒的纳秒数
MX_NANOSEC_PER_MICROSEC每微秒的纳秒数
MX_IS_POWER_OF_2(x)判断是否为 2 的次方
MX_IS_ALIGNED(x, align)判断是否对齐
MX_ALIGN_ATTR(var, alignment)定义一个地址对齐的变量
MX_STRUCT_PACK_BEGINpack 紧排结构体开始
MX_STRUCT_PACK_ENDpack 紧排结构体结束
MX_STRUCT_PACK_FIELD(field)pack 紧排结构体成员
MX_STRUCT_PACK_STRUCTpack 紧排结构体
MX_WEAK弱符号
MX_INT_MAX32 位有符号整型数最大值
MX_INT_MIN32 位有符号整型数最小值
MX_ARCH_MB()内存屏障
MX_ARCH_WMB()写指令屏障
MX_ARCH_RMB()读内存屏障
MX_ARCH_ISB()指令屏障
MX_ARCH_IDLE()CPU 进入空闲状态
MX_ARCH_CPU_BITSCPU 位宽
MX_ARCH_BYTE_ORDERCPU 大小端
MX_ARCH_STACK_MIN_SIZE栈空间的最小值
MX_ARCH_STACK_MAX_SIZE栈空间的最大值
MX_ARCH_STACK_ALIGN栈对齐要求
MX_VERSION内核版本数值
MX_VERSION_STRING内核版本字符串
MX_CURRENT_STATE()当前运行状态
MX_CURRENT_PROCESS()当前运行进程
MX_CURRENT_PARTITION()当前运行分区
MX_CURRENT_PARTITION_ID()当前分区 ID
MX_INTERRUPT_NESTING()当前中断嵌套层数
MX_ASSERT(xxx)断言
MX_ASSERT_NOT_IN_INTERRUPT()不在中断中断言
MX_PARTITION_GET(partition_id)根据 ID 获取分区控制块

MX_STRUCT_PACK_xxx

可以使用 MX_STRUCT_PACK_BEGIN, MX_STRUCT_PACK_FIELD, MX_STRUCT_PACK_STRUCTMX_STRUCT_PACK_END 宏定义一个 pack 紧排结构体,示例如下:

MX_STRUCT_PACK_BEGIN
struct xxx {
    MX_STRUCT_PACK_FIELD(MX_UINT32 yyy);
} MX_STRUCT_PACK_STRUCT;
MX_STRUCT_PACK_END

汇编文件使用的宏

针对汇编文件,Matrix653 还提供了以下的宏定义:

含义
FILE_BEGIN汇编文件的开始
FILE_END汇编文件的结尾
EXPORT_LABEL(label)导出符号声明
IMPORT_LABEL(label)导入符号声明
LINE_LABEL(label)定义行标签
FUNC_DEF(func)函数定义开始
FUNC_END(func)函数定义结尾
MACRO_DEF(mfunc...)宏定义开始
MACRO_END()宏定义结尾
SECTION(sec)定义节
WEAK(sym)弱符号
文档内容是否对您有所帮助?
有帮助
没帮助