打印
[热门应用]

求助,ChipON指令集 详细说明 及 支持的 宏定义,伪指令

[复制链接]
1155|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
laoxu|  楼主 | 2016-6-15 09:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
玩了2天汇编,对 ChipON的汇编指令集有了深刻的了解,总体来说,V1核设计的比较合理,简洁的内核,体现了较高的性价比,是一颗非常有发展前途的内核。


由于搞的小玩意,有一个比较大的数据表要随时查询,目前 ChipON---IDE 编译器,对 ROM中的表格查询缺乏支持,故决定直接用汇编编程,好直接使用 RRET   Rn,#data 指令查表,只是官网上未能找到 ChipON指令集 比较详细的介绍**,特别是 ChipON---IDE 编译器,目前支持哪些 汇编的 宏定义,伪指令 等。


谢谢!


沙发
Jim12345| | 2016-6-15 11:34 | 只看该作者
查16位表会尽快有一个应用笔记出来。 RRET Rn,#data中data只能是8位的立即数。

使用特权

评论回复
板凳
laoxu|  楼主 | 2016-6-15 13:00 | 只看该作者
Jim12345 发表于 2016-6-15 11:34
查16位表会尽快有一个应用笔记出来。 RRET Rn,#data中data只能是8位的立即数。 ...

汇编比较灵活,可分段查询大于 256字节的表格,难不倒我。

只是对 ChipON---IDE 编译器 的汇编 不太熟悉,急求  ChipON---IDE 编译器 支持的 宏定义,伪指令 等 说明文件。

使用特权

评论回复
地板
gbbfbaa| | 2016-6-15 16:13 | 只看该作者
laoxu 发表于 2016-6-15 13:00
汇编比较灵活,可分段查询大于 256字节的表格,难不倒我。

只是对 ChipON---IDE 编译器 的汇编 不太熟悉 ...

www.chipon-ic.com 下载一个ide和开发软件demo 例程包里面有编译器的详细说明和关键字解释
这里面有个详细说明

使用特权

评论回复
5
laoxu|  楼主 | 2016-6-15 19:11 | 只看该作者
gbbfbaa 发表于 2016-6-15 16:13
www.chipon-ic.com 下载一个ide和开发软件demo 例程包里面有编译器的详细说明和关键字解释
这里面有个详 ...

谢谢!

下载看了,汇编伪指令挺齐全的,经测试,有两个主要问题。

1.  .MACRO 宏指令, 只能一次有效,如在程序中插入数次宏,只有第一次编译成有效代码!后面几次无编译代码。

2.  可重定位数据段,不知如何正确书写,试了好多种方法,都报错。
.global Var1, Var2
.udata
    Var1 .res 1
    Var2 .res 1




使用特权

评论回复
6
laoxu|  楼主 | 2016-6-15 19:16 | 只看该作者
另外,是否可提供,编译好的重定位代码,建库函数程序。

使用特权

评论回复
7
laoxu|  楼主 | 2016-6-16 07:42 | 只看该作者
重定位数据段 如何用,试出了,要放在文件顶头才管用。

另外,程序查错功能很弱,像 变量 定义重复,漏定义 之类的,都不检查直接通过,到了 make   Error 1,没法定位出错位置。

玩了几天,对  ChipON---IDE 编译器 也熟悉了,现在最大的问题是,MACRO 宏指令, 只能单次有效!后面几次无编译代码。

使用特权

评论回复
8
gbbfbaa| | 2016-6-16 09:31 | 只看该作者
laoxu 发表于 2016-6-16 07:42
重定位数据段 如何用,试出了,要放在文件顶头才管用。

另外,程序查错功能很弱,像 变量 定义重复,漏定 ...

1.是否是asm多文件编译?

2.是否  是你修改了  .macro  编译但是没更新你新修改的代码。?

3..macro 放在inc文件中,

这种情况,可以选择项目,右键,选择清空项目,然后再编译,就会更新

使用特权

评论回复
9
JIM123456| | 2016-6-16 10:10 | 只看该作者
laoxu 发表于 2016-6-15 19:11
谢谢!

下载看了,汇编伪指令挺齐全的,经测试,有两个主要问题。

数据段需要有名字,你看看我的例子。

宏可以使用多次,你注意下最后一条NOP,地址变化了。

未命名.bmp (973.94 KB )

未命名.bmp

使用特权

评论回复
10
JIM123456| | 2016-6-16 10:19 | 只看该作者
laoxu 发表于 2016-6-15 19:16
另外,是否可提供,编译好的重定位代码,建库函数程序。

可以的,这边需要了解函数传参形式
unsigned char func(unsigned char a,unsigned char b)
a         -> R0
b         -> STK00
返回值 -> R0

unsigned int func(unsigned int a,unsigned int b)
a          -> R0      STK00
b          -> STK01 STK02
返回值 ->  R0      STK00

另外C符号如何转换为汇编符号 在C符号前加下划线。比如在C函数中的main,对应汇编的_main

可重定位代码段的书写格式
section_name .code
其中section_name为段名,用户自定义

可重定位数据段书写格式
section_name .idata
section_name .udata
其中section_name为段名,用户自定义
idata对应初始化数据,在此段中使用.db .dw存放数据
udata对应为初始化数据,在此段中使用.res占用内存

符号声明 .extern fun
声明一个外部符号fun

声明一个全局符号 .global fun
声明fun为全局符号,在其他文件中可以访问此符号

使用特权

评论回复
11
laoxu|  楼主 | 2016-6-16 10:25 | 只看该作者
1.是否是asm多文件编译?    答:单文件和多文件一样结果

2.是否  是你修改了  .macro  编译但是没更新你新修改的代码。?  答:已全部文件存盘

3..macro 放在inc文件中,       答:放在 inc文件中 和 放在 asm文件 中,结果一样

这种情况,可以选择项目,右键,选择清空项目,然后再编译,就会更新   答:清空项目,结果也一样

使用特权

评论回复
12
laoxu|  楼主 | 2016-6-16 10:25 | 只看该作者
简化的测试程序:

.INCLUDE "KF8F335.INC"
.INCLUDE "ABC.INC"

;Read .macro
;  mov R0, R1
; .endm

        .ORG 0X0000
        NOP
        JMP MAIN
        .ORG 0X0004
        JMP INTERRUPT

INTERRUPT
        IRET
MAIN
   Read
   NOP
   Read
   NOP
   Read
        .END

使用特权

评论回复
13
laoxu|  楼主 | 2016-6-16 10:27 | 只看该作者
把  Read .macro
            mov R0, R1
      .endm

放在 ABC.INC 中,和 放在  asm文件 中,编译结果一样

使用特权

评论回复
14
laoxu|  楼主 | 2016-6-16 10:31 | 只看该作者


文件中 三次调用 宏, 实际编译结果 ,只有第 一次, 后面 二次没有 程序代码!

使用特权

评论回复
15
laoxu|  楼主 | 2016-6-16 10:40 | 只看该作者
JIM123456 发表于 2016-6-16 10:19
可以的,这边需要了解函数传参形式
unsigned char func(unsigned char a,unsigned char b)
a         ->  ...

谢谢!

写的很详细,最好能给个简单的DEMO, 现在最头大的是,变量在调用时,编译出错,横改竖改,不知哪里书写不正确。

使用特权

评论回复
16
laoxu|  楼主 | 2016-6-16 10:44 | 只看该作者
JIM123456 发表于 2016-6-16 10:10
数据段需要有名字,你看看我的例子。

宏可以使用多次,你注意下最后一条NOP,地址变化了。

这个例子中,宏插入后的空间,是留出来了,但宏代码 没编译啊~~~

只有 第一次的 宏代码,是编译的。

使用特权

评论回复
17
laoxu|  楼主 | 2016-6-16 10:59 | 只看该作者
查看了 HEX 文件, 宏代码 是生成机器码了, 原来一直查看的是 LST 文件,没有~~~

使用特权

评论回复
18
JIM123456| | 2016-6-16 12:54 | 只看该作者
laoxu 发表于 2016-6-16 10:59
查看了 HEX 文件, 宏代码 是生成机器码了, 原来一直查看的是 LST 文件,没有~~~  ...

是的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:猜猜俺是谁的马夹?

146

主题

2274

帖子

221

粉丝