
D语言学习
以例为证,,说明一些D语言的技巧及优势
sdvcn
这个作者很懒,什么都没留下…
展开
-
TinyCC 作为脚本解释器的使用 D语言代码
TinyCC 作为脚本解释器的使用 D语言代码TinyCC 获取及编译https://bellard.org/tcc/ 这是代码获取途径编译直接用 win32目录下的 build-tcc 编译工具进行编译即可,我这里是采用 vs build tools进行的编译编译命令为 build-tcc.bat -c cl注: 在windows采用这种方式编译输出为libtcc.dll,程序发布时得确认libtcc.dll同时发布注:如果使用了C语言得通用库中函数,在程序发布时得附带 lib和includ原创 2021-11-27 11:06:34 · 857 阅读 · 0 评论 -
D语言中ARM架构中CRC寄存器的操作
D语言中CRC寄存器的操作代码范例/********************** 寄存器方式处理CRC32* CRC.IDR 寄存器作为调用计数器进行使用,请勿复用这个寄存器 最高位为busy指示.参数:返回: uint范例:--------------------auto hash = crc32of(1,&buf);-------------------- bug: * 调用计数超 0x7F 会溢出;* 采用a原创 2021-04-11 22:19:03 · 347 阅读 · 0 评论 -
mculib4d 库更新 增加寄存器操作模板
mculib4d 库更新 增加寄存器操作模板寄存器读写模板范例代码寄存器读写模板Peripheral.Register.read4slice : 读取模板Peripheral.Register.write4slice : 写入模板Peripheral.Register[] : 索引方式读取Peripheral.Register[]=x : 索引方式写入范例代码import mculib.chips;void test(){ RCC.PLLCFGR.read4slice!(1,2原创 2021-02-11 19:10:03 · 215 阅读 · 0 评论 -
D语言下ARM外设通用模板设计
D语言下ARM外设通用模板设计介绍实现代码调用方式介绍这是一个外设寄存器读写通用设计,通过SVD文件转换的代码可以直接用来生成HAL操作的class.具体代码应用往下看~.mculib4d的项目网站源代码在这里实现代码module mculib.arch.cortex_m.peripheral;import std.traits : isNumeric;import std.meta : allSatisfy;//pragma(LDC_verbose);/** 转换到位带原创 2021-02-08 16:28:58 · 139 阅读 · 0 评论 -
SVD文件转换工具
SVD文件转换工具用途代码用途转换现有svd文件到 mculib4d 的芯片声明工具代码查阅代码module svd;import std.stdio;import std.file;import std.xml;import std.string;import std.regex;struct tys{ union{ uint i1; ushort[2] s1; ubyte[4] b1; }}int main(){ string svdfile原创 2021-02-08 16:27:51 · 1432 阅读 · 0 评论 -
D语言中的重载操作
D语言中的重载操作,通过实例代码演示数组操作重载相关的函数及规则原创 2021-02-08 13:25:13 · 203 阅读 · 1 评论 -
D语言中的Cortex-M4系列寄存器读写权限及读写方法
D语言中的Cortex-M4系列寄存器读写权限及读写方法位读写权限读写方法其他相关位读写权限简写定义rw(读写权) 可由程序进行读写r(读权) 可由程序读取该位w(写权) 可由程序写入该位rc_w1(读写权) 可由程序读取该位,向该位写1时清除位,写0对该位无影响rc_w0(读写权) 可由程序读取该位 ,向该位写0时清除位,写1对该位无影响rc_r(读写权) 可由程序读取该位,读取时自动对该位置零,写0对该位无影响rs(读写权) 可由原创 2021-02-05 19:20:40 · 503 阅读 · 1 评论 -
D语言中声明 与存储位置相关
D语言中声明 与存储位置相关代码说明注释:代码说明D语言中声明 与存储位置相关uint t1=0x11111111; // this goes to tdata TLS,有初始化int t2; // this goes to tbss TLS__gshared int t3=0x33333333; // this goes to data 有初始化__gshared int t4;原创 2021-02-05 11:20:25 · 122 阅读 · 0 评论 -
D语言中的嵌入汇编-LDC编译器
@TOC)接口形式LDC编译器可支持两种书写方式,一种是GCC格式的,另外一种需要调用内置的函数模板进行实现/* 无返回的定义*/void __asm (char[] asmcode, char[] constraints, [ Arguments... ] );/* 单返回定义*/template __asm(T) { T __asm (char[] asmcode, char[] constraints, [ Arguments... ] );}/* 多返回定义*/st原创 2021-02-04 12:05:43 · 345 阅读 · 0 评论 -
D语言中的Cortex-M4系列中断向量表处理
D语言中的Cortex-M4系列中断向量表处理向量表:在mculib4d中的定义方式向量表:// form file:stm32f401xc.hstruct IRQn_Type{/****** Cortex-M4 Processor Exceptions Numbers ****************************************************************/ Reset_IRQn = -15, NonMaskableInt_IRQn原创 2021-02-03 18:17:14 · 2433 阅读 · 3 评论 -
D语言原生的arm的hal操作库
mculib4d项目主页介绍D语言原生的arm的hal操作库,直接使用LDC进行编译,无需交叉环境这种混乱东西.通过SVD直接生成mc的底层操作,大部分功能基于D的模板进行实现,尽量实现D语言原生的实现.软件架构前端选择D语言,编译器使用LDC.目录结构├─mculib // 调用库文件│ ├─core // 与D库同名,进行覆盖调用,日后会取消类似覆盖调用方式│ ├─mcu原创 2021-02-02 18:55:02 · 508 阅读 · 6 评论 -
D语言中的混入型模板
D语言中的混入型模板基本语法模板声明模板调用模板范本mixin 表达式调试基本语法模板声明mixin template 识别名 模板参数 约束条件(可选) { 内容 }模板可通过参数及约束条件进行重载模板调用mixin 模板识别名 模板参数(可选) 识别名(可选)通过模板识别名可以直接调用模板,或通过新建一个识别名来调用模板内容模板范本mixin template Foo(size_t addr,T) // 声明模板{ size_t maddr = addr; // 传入参原创 2021-01-27 10:15:44 · 310 阅读 · 0 评论 -
D语言编写单片(STM32F401cc)机应用需要用到的技巧 - 主入口函数
D语言编写单片机应用需要用到的技巧 - 主入口函数入口函数入口函数单片机一定会需要一个主入口函数,至于是那个主要看linker script中的定义,并不一定是你看到的main函数(多数情况下也不会是它),cortex-m框架基本会从FLASH:0x08000000位置读取一个向量表Vectors (可参考的一份文章),mcu会从Reset_Handler开始执行代码,具体实现需要参考linker script中的定义,我的做法是在linker script增加定义MEMORY{ FLASH (R原创 2021-01-11 13:34:25 · 380 阅读 · 0 评论 -
D语言(dlang)编写单片机(cortex-m系列)应用需要用到的技巧
D语言编写单片机应用需要用到的技巧volatile 关键字应用方法:volatile 关键字D语言(版本:2.094之前)中并未实现内置volatile关键字,它提供的标准库中有相关的实现.在单片机编程中volatile是不可缺少的关键字,这个关键字是确保声明定义的有效性.,我们建立一个struct模板来方便实现这个功能.struct Volatile(T) { import core.volatile; // 加载标准苦 T raw; // 通过模板传入的T来建立原创 2021-01-11 12:20:13 · 322 阅读 · 0 评论