当前位置: 首页 > news >正文

Scade pragma: separate_io

概述

在 Scade 语言中,支持对用户自定义算子使用 separate_io pragma 进行修饰。其形式如:

function #pragma kcg separate_io #end N(x: int8) returns (y,z: int8)
let y = x;z = x;
tel

在上例中,算子N 就被 pragma #pragma kcg separate_io #end 修饰。该pragma 将影响 kcg 对算子输入参数和返回值列表的处理。输入参数在生成代码中,将不被包装在 Context 结构体中,而是以分离的输入参数的形式出现在生成代码中。类似地,输出流在生成代码中将不被包装在 Context 结构体中,而是以分离指针参数的形式存在。

上例对应的生成代码的函数签名如下

extern void N(kcg_int8 x, kcg_int8 *y, kcg_int8 *z);

其中 x 为输入流,y, z 为输出流。

作为对比,无 separate_io pragma 的形式:

function N2(x: int8) returns (y,z: int8)
lety = x;z = x;
tel 

相应的生成代码的函数签名如下

typedef struct { kcg_int8 x; } inC_N2;typedef struct {kcg_int8 y;kcg_int8 z;
} outC_N2;extern void N2(inC_N2 *inC, outC_N2 *outC);

注意到,当无 separate_io pragma 时,输入被包装在 inC_N2 结构体中,输出被包装在 outC_N2 结构体中。

输出流仅有一项时的简化情况

当输出流仅有一项时,在使用 separate_io pragma 的情况下,生成代码会将输出流简化生成为 return 返回值,而不是作为指针参数。比如:

function #pragma kcg separate_io #end 
M (x: int8) returns (y: int8)y = x;

上例中,输出流仅有 y, 并且使用了 separate_io pragma。则生成代码的函数签名为:

extern kcg_int8 M(kcg_int8 x);

y 为函数 M 的返回值。

http://www.lryc.cn/news/516047.html

相关文章:

  • IWOA-GRU和GRU时间序列预测(改进的鲸鱼算法优化门控循环单元)
  • “知识图谱AI教学辅助系统:点亮智慧学习的新灯塔
  • 产品 防尘防水IP等级 划分与实验方法
  • 【微服务】1、引入;注册中心;OpenFeign
  • 01、Docker学习,第一天:简单入门与安装
  • C++STL中iomanip的使用与细节
  • 3.C语言变量的基础概念与使用
  • Go语言中的逃逸分析:深入浅出
  • 【FlutterDart】 拖动改变 widget 的窗口尺寸大小GestureDetector~简单实现(10 /100)
  • 【论文笔记】LongLoRA: Efficient Fine-tuning of Long-Context Large Language Models
  • 数据挖掘——朴素贝叶斯分类
  • unity中的UI系统---GUI
  • 鸿蒙Flutter实战:15-Flutter引擎Impeller鸿蒙化、性能优化与未来
  • C语言冒泡排序教程简介
  • Fabric链码部署测试
  • k620老显卡,装cuda.等。
  • 网站常用功能模块-鉴权
  • 直接插入排序、折半插入排序、2路插入排序、希尔排序
  • FQ-GAN代码解析
  • 如何恢复已删除的 Telegram 消息 [iOSamp;Android]
  • asp.net core中的 Cookie 和 Session
  • Python实现一个简单的 HTTP echo 服务器
  • Ruby 中文编码
  • 淘金优化算法的信息共享与更新机制改进
  • Python中的ast.literal_eval:安全地解析字符串为Python对象
  • 【AI数学基础】线性代数:内积和范数
  • Go语言的 的泛型(Generics)核心知识
  • C++vector
  • 如何配置【Docker镜像】加速器+【Docker镜像】的使用
  • Docker--Docker Network(网络)