C语言特性学习
天才da熊猫
这个作者很懒,什么都没留下…
展开
-
inline asm进阶
1、如何传入一个neon的向量寄存器,并在此寄存器的基础上进行修改?假设传入一个float32x4_t的数据,经过asm处理该数据后返回:float a[4] = { 1.0,2.0,3.0,4.0 };float32x4_t v_tmp = vdupq_n_f32(100.0);__asm__ volatile( "ld1 {v0.4s},[%[src]] \n" "fadd %[dst].4s, %[dst].4s,v0.4s" :[src]"=r"(a), [dst]"=w"(v_t原创 2021-01-07 16:58:01 · 517 阅读 · 0 评论 -
neon指令整理
参考:https://blog.csdn.net/ywl0424151906/article/details/99640855vtrnvtrn实现transpose转载 2020-12-24 16:06:43 · 314 阅读 · 1 评论 -
Python / C API 相互调用
最近需要将库封装为python可调用的库。目前验证是可以直接使用静态库封装,如果想使用动态库,linux可以使用以下指令生成动态库。ar -x mylib.agcc -shared *.o -o mylib.so封装过程中遇到undefined reference to symbol '_ZTVN10__cxxabiv117__class_type_infoE类似问题,则需要将gcc改为g++就可以了。动态库的使用方法参考博客以下所有问题都可以从python官网和中文链接中找到问题答案,封装原创 2020-08-05 16:13:43 · 431 阅读 · 0 评论 -
python封装c函数库的调用
主要使用ctypes,具体内容参考项目中可能会经常用到第三方库,主要是出于程序效率考虑和节约开发时间避免重复造轮子。无论第三方库开源与否,编程语言是否与当前项目一致,我们最终的目的是在当前编程环境中调用库中的方法并得到结果或者借助库中的模块实现某种功能。这个过程会牵涉到很多东西,本篇文章将简要的介绍一下该过程的一些问题。1.背景多语言混合编程可以弥补某一种编程语言在性能表现或者是功能等方面的不足。虽然所有的高级语言都会最终转换成汇编指令或者最底层的机器指令,但是语言本身之间的千差万别很难一言以蔽之原创 2020-07-29 15:10:23 · 1117 阅读 · 0 评论 -
C语言学习#pragma pack和宏使用
#pragma pack(push)让编译器将当前对齐状态保存下来#pragma pack(pop) 让编译器恢复保存的状态#pragma pack(n) 让编译器按照n字节对齐#include <stdio.h> #define CLASS(a) typedef struct a a; \ struct a{ \ a##_FIELDS; \ };#define ALIGN_SET(n) __pragma(pack(push, n))#define ALIGN_RE原创 2020-07-27 16:34:10 · 583 阅读 · 2 评论