C30_编译器
- 格式:ppt
- 大小:467.50 KB
- 文档页数:41
qt creator 编译参数
Qt Creator是一个集成开发环境(IDE),用于开发基于Qt框架的应用程序。
编译参数是指在使用Qt Creator进行项目编译时,可以设置的一些参数,以便对编译过程进行定制或优化。
首先,编译参数可以包括编译器选项,比如优化级别、调试信息、目标平台等。
在Qt Creator中,你可以通过项目文件(例如.pro文件)来设置这些编译参数。
比如,你可以在.pro文件中使用QMAKE_CXXFLAGS变量来设置C++编译器的参数,比如优化级别和调试信息等。
类似地,你可以使用QMAKE_CFLAGS来设置C编译器的参数。
另外,编译参数还可以包括链接器选项,比如库路径、链接的库等。
同样地,你可以在项目文件中使用QMAKE_LFLAGS变量来设置链接器的参数,比如库路径和需要链接的库等。
除了项目文件中的设置,Qt Creator还提供了图形化界面来设置编译参数。
在项目的构建设置中,你可以找到编译器和链接器的设置选项,可以方便地进行设置和调整。
此外,Qt Creator还支持使用CMake作为项目的构建系统,因
此你也可以通过CMakeLists.txt文件来设置编译参数。
总的来说,Qt Creator提供了多种灵活的方式来设置编译参数,以满足不同项目的需求。
通过项目文件、图形化界面或CMakeLists.txt文件,你可以定制和优化项目的编译过程,以获得
更好的性能和效果。
MPLAB® C30C编译器用户指南 2006 Microchip Technology Inc.DS51284E_CNDS51284E_CN 第ii 页2006 Microchip Technology Inc.Microchip 位于美国亚利桑那州Chandler 和Tempe 、位于俄勒冈州Gresham 及位于加利福尼亚州Mountain View 的全球总部、设计中心和晶圆生产厂均通过了ISO/TS-16949:2002认证。
公司在PICmicro ® 8位单片机、K EE L OQ ®跳码器件、串行EEPROM 、单片机外设、非易失性存储器和模拟产品方面的质量体系流程均符合ISO/TS-16949:2002。
此外,Microchip 在开发系统的设计和生产方面的质量体系也已通过了ISO 9001:2000 认证。
商标Microchip 的名称和徽标组合、Microchip 徽标、Accuron 、dsPIC 、K EE L OQ 、micro ID 、MPLAB 、PIC 、PICmicro 、PICSTART 、PRO MATE 、PowerSmart 、rfPIC 和SmartShunt 均为Microchip Technology Inc .在美国和其他国家或地区的注册商标。
AmpLab 、FilterLab 、Migratable Memory 、MXDEV 、MXLAB 、SEEVAL 、SmartSensor 和The Embedded Control Solutions Company 均为Microchip Technology Inc .在美国的注册商标。
Analog-for-the-Digital Age 、Application Maestro 、dsPICDEM 、 、dsPICworks 、ECAN 、ECONOMONITOR 、FanSense 、FlexROM 、fuzzyLAB 、In-Circuit Serial Programming 、ICSP 、ICEPIC 、Linear Active Thermistor 、Mindi 、MiWi 、MPASM 、MPLIB 、MPLINK 、PICkit 、PICDEM 、 、PICLAB 、PICtail 、PowerCal 、PowerInfo 、PowerMate 、PowerTool 、REAL ICE 、rfLAB 、rfPICDEM 、Select Mode 、Smart Serial 、SmartTel 、Total Endurance 、UNI/O 、WiperLock 和ZENA均为Microchip Technology Inc .在美国和其他国家或地区的商标。
NOTE-PIC24F程序编写注意事项罗列PIC24系列程序编写过程中容易造成问题的注意点。
1、未使用的中断源易引起复位。
MPLAB C30编译器对程序总未使用的中断服务程序的各个中断向量均填充为:DefaultInterrupt. _DefaultInterrupt地址处是一条软件复位指令“RESET”,也就是说一旦有未使用的中断服务程序的中断源产生了中断,且CPU又允许其中断,则会导致芯片复位。
例如中断向量表中的算术运算错误入口为_DefaultInterrupt,当除法运算指令遇到分母为零时就会使芯片复位,用户在调试程序时应充分注意到这一点。
2、地址错误陷阱PIC24系列数据总线宽度为16位,存储器数据均以16位字对齐,每个字的低字节为偶地址,所有对字的访问必须是偶地址,否则会产生地址错误陷阱。
用间接寻址方式访问数据存储空间的字单元(16位数据)时,应确保指针指向偶地址,也就是指向数据的低字节地址,否则将产生地址错误陷阱中断,默认情况下士执行复位指令。
例如用INT指针初始化char数组:int *wptr; //定义一个指向int数据的指针char i;char x[100];wptr=&x[0];for(i=0;i<50;i++){*wptr=0x00;wptr++;}编译后,若分配给char型数据x的首地址为奇数,则运行时将产生地址错误陷阱。
3、外设输入信号的软件模拟调试嵌入式项目的开发一般需软件和硬件联机调试。
但在发过程中,特别是早期开发阶段,可能相关的硬件电路还未准备好,或者调试程序时要产生相应的输入信号比较麻烦,这时对于一些外设输入信号,可充分利用外设与 I/O 引脚的复用特性,人为地通过 LATx或PORTx寄存器用输出指令来模拟产生相应的输入信号。
例如调试输入捕捉功能的程序,若无实际的捕捉信号输入,可以临时将输入捕捉引脚所对应的I/O 口线设置成输出(方向控制寄存器TRISx 中的控制位设置成“0”),通过人为地将LATx/PORTx 寄存器中相应的位置“1”和清“0”来形成输入捕捉引脚的所需状态,以测试程序的流程和响应是否正确。
cmake:选择编译器及设置编译器选项1. 说明在实际的项⽬平台中可能安装有多个版本的编译器,同时由于不同的功能可能会需要设置不同的编译参数,这篇笔记就记录如何选择指定的编译器和配置参数。
2. 选择编译器2.1 初始状态我使⽤的开发平台默认安装的gcc5.5.0,后⾯⼜安装了clang3.8.0,在默认path下C编译器会使⽤gcc 5.5.0,C++编译器使⽤clang3.8.0,如下所⽰:/build$ cmake ..-- The C compiler identification is GNU 5.5.0-- The CXX compiler identification is Clang 3.8.0...后⾯由于项⽬开发的要求我⼜安装了gcc8.3.0版本,PATH也是设置为8.3.0,即在命令⾏下输⼊"gcc -v"默认显⽰8.3.0,但是在cmake会根据PATH路径去查找⽀持的编译器,还是会⾸先查找到原来的编译器版本。
2.2 使⽤命令⾏在编译时可以通过参数直接选择指定的编译器的完整路径,⽐如我的gcc8.3.0安装在/usr/local/gcc/bin路径下,在编译时输⼊:cmake .. -DCMAKE_CXX_COMPILER=/usr/local/gcc/bin/g++就会在编译时选定gcc-8.3.02.3 在配置⽂件中指定在CMakeLists.txt⽂件中添加:set (CMAKE_C_COMPILER "/usr/local/gcc/bin/gcc")set (CMAKE_CXX_COMPILER "/usr/local/gcc/bin/g++")直接修改全局变量CMAKE_C_COMPILER和CMAKE_CXX_COMPILER为指定的编译器路径。
注:这两条命令应该放在⽂件的开始位置(cmake_minimum_required命令之下,其他命令之上),否则可能⽆效。
keil 编译c++程序(原创版)目录1.介绍 Keil 编译器2.讲述如何使用 Keil 编译 C++程序3.总结 Keil 编译 C++程序的优点和不足正文一、介绍 Keil 编译器Keil编译器是一款广泛应用于嵌入式系统开发的C/C++编译器。
它由Keil公司开发,能够为各种单片机和微控制器生成高效的机器码。
Keil 编译器提供了一个集成的开发环境,方便程序员编写、调试和下载程序到目标硬件。
其中,Keil C++编译器支持 C++语言的主要特性,适用于开发复杂的嵌入式系统应用程序。
二、讲述如何使用 Keil 编译 C++程序1.安装 Keil 编译器首先,需要从 Keil 公司的官方网站下载并安装 Keil 编译器。
根据您的操作系统选择对应的安装包,然后按照安装向导的提示进行安装。
2.创建 C++程序使用 Keil 编译器编写 C++程序,可以采用以下步骤:(1)新建一个工程项目:在 Keil 中,选择“Project”菜单下的“New uVision Project”命令,创建一个新的工程项目。
(2)编写 C++代码:在项目中创建一个新的 C++源文件(例如:main.cpp),并在其中编写您的程序代码。
(3)添加头文件和库文件:在源文件中引用所需的头文件和库文件。
例如,如果您的程序需要使用标准库中的 iostream,可以在源文件开头添加#include <iostream>。
3.编译 C++程序(1)配置编译选项:在 Keil 中,选择“Project”菜单下的“Options for Target”命令,设置编译选项,例如编译器、优化选项等。
(2)编译程序:在 Keil 中,选择“Build”菜单下的“Rebuild All”或者“Rebuild Active”命令,编译您的 C++程序。
编译完成后,Keil 会生成一个或多个目标文件(例如:main.elf)。
4.下载程序到目标硬件将编译生成的目标文件下载到目标硬件,您可以使用 Keil 的烧写工具(如:USB-Blaster)或者其他烧写工具。
c语言子集编译器实验报告书C语言子集编译器实验报告书一、引言编译器是一种将高级语言代码转换为机器语言代码的工具。
本报告旨在介绍我们设计和实现的C语言子集编译器。
该编译器可以接受符合C语言子集语法规范的源代码,并将其转换为目标机器的可执行文件。
本报告将详细介绍编译器的设计思路、实现过程和测试结果。
二、设计思路我们的编译器主要分为四个阶段:词法分析、语法分析、语义分析和代码生成。
首先,词法分析器将源代码分解为一个个的词法单元,如关键字、标识符、运算符等。
然后,语法分析器将词法单元按照语法规则进行组合,构建出抽象语法树。
接下来,语义分析器对抽象语法树进行语义检查,确保源代码的合法性。
最后,代码生成器将抽象语法树翻译成目标机器的汇编代码,并生成可执行文件。
三、实现过程1.词法分析词法分析器采用有限状态自动机的方式进行实现。
它读取源代码字符流,并根据预定义的正则表达式规则逐个识别出词法单元。
识别出的词法单元被作为输入传递给语法分析器。
2.语法分析语法分析器采用递归下降的方式进行实现。
它根据C语言子集的语法规则,逐步展开抽象语法树的各个节点。
在展开的过程中,语法分析器将词法单元与语法规则进行匹配,确保源代码的语法正确性。
3.语义分析语义分析器在语法分析的基础上,进一步检查源代码的语义错误。
它通过符号表来管理变量和函数的声明和引用,并进行类型检查和作用域检查等。
如果发现语义错误,语义分析器将报告错误信息,并中断编译过程。
4.代码生成代码生成器根据语义分析器生成的抽象语法树,将其翻译成目标机器的汇编代码。
它会为每个变量分配内存空间,并生成相应的加载和存储指令。
最后,代码生成器将生成的汇编代码输出到一个文件中,并调用目标机器的汇编器和链接器生成可执行文件。
四、测试结果为验证编译器的正确性和性能,我们设计了一系列测试用例,涵盖了C语言子集的各种语法和语义规则。
经过测试,编译器能够正确处理各种情况下的源代码,并生成符合预期的可执行文件。
第7章基于Simulink模块的dsPIC单片机开发前面几章讲述了模型代码加手工代码的方式,开发单片机的新技术,不过这种方法也存在重复编写器件配置代码的问题。
为了加快项目的开发速度和避免不必要的重复劳动,Microchip公司针对dsPIC30和dsPIC33 DSC等器件,提供了一套接口兼容的配置和运行时外设模块集---MATLAB Plug-in blockset。
它可以使MATLAB/SIMULINK/Stateflow与MATLAB Plug-in blockset/MPLAB IDE无缝连接,利用Real-time Workshop Embedded Coder代码生成工具,自动生成应用的实时嵌入式C代码。
可极大的提高工作效率和降低开发成本,同时也可降低了运用dsPIC3x DSC器件开发工程师的门槛。
下面对MATLAB Plug-in blockset作一简单介绍:模块集的主要特性:①模块适用于dsPIC3x系列的所有外设②可通过“cCall”模块方便地集成经过验证C代码③从MATLAB环境中构建环境配置版本2.0的新增功能:①支持dsPIC30F系列器件②电机控制算法库③缺陷修正和改进④演示版——免费评估版⑤与MPLAB的MATLAB插件更好地集成在一起⑥与从R2007a到R2009b的所有MATLAB版本兼容,不过也支持R2010a、R2010b版(作者安装的版本是R2010b)。
模块适用于dsPIC3x系列的所有外设本章的主要内容:●MPLAB开发工具简介●dsPIC外围驱动模块介绍及应用●无对应驱动模块时的应用7.1 MPLAB嵌入式开发环境及工具MPLAB IDE是microchip公司开发的基于Windows 操作系统的集成开发环境,适用于PICmicro MCU 系列和dsPIC数字信号控制器的开发。
同时,MPLAB IDE还将其他microchip工具集和第三方软件集成到一个图形用户界面之中。
瑞萨单片机启动文件介绍1.NC30介绍NC30的组件:nc30----------------编译驱动器cpp30---------------预处理器ccom30--------------编译器aopt30--------------汇编优化器sbauto--------------SB寄存器自动更新工具stkviewer & stk-----STK查看器与堆栈大小计算工具utl30---------------SBDATA声明及SPECIAL页函数声明工具mapview-------------映射查看器看下NC30处理流程:程序开发流程,生成X30文件的流程:以上就是编译器所做的工作和流程。
看了之后大家有了大概的了解。
具体的大家可以参看NC30编译器手册,待会会上传附件给大家下载。
2:启动程序介绍ncrt0.a30这个程序在程序启动或复位后立即运行,它主要执行下列处理:.设置SBDATA区.设置处理器的操作模式.初始化堆栈指针.初始化SB寄存器.初始化INTB寄存器.初始化NEAR数据区.初始化FAR数据区.初始化堆区.初始化标准I/O函数程序库.初始化FB寄存器.调用MAIN函数ncrt0.a30汇编文件,在建立工程的时候会自动生成。
以下附带详细注释,附件也可下载。
;***************************************************************************; C Compiler for R8C/Tiny, M16C/60,30,20,10; Copyright(C) 1999(2000-2006). Renesas Technology Corp.; and Renesas Solutions Corp., All rights reserved.;; ncrt0.a30 : Startup Program for M16C family;; $Date: 2006/11/22 04:13:23 $; $Revision: 1.1.4.1 $;***************************************************************************;---------------------------------------------------------------------; include files ;包含文件;---------------------------------------------------------------------.list OFF ;控制行输出数据输出到列表文件OFF:停止ON:开始.include nc_define.inc ;包含宏文件.include sect30.inc ;包含存储器映射文件.list ON;---------------------------------------------------------------------; BankSelect definition for 4M mode;---------------------------------------------------------------------; .glb __BankSelect;__BankSelect .equ 0BH;===================================================================== ; Interrupt section start ;中断段起始;---------------------------------------------------------------------.insf start,S,0.glb start.section interruptstart: ;复位后从这个标签开始运行;---------------------------------------------------------------------; after reset,this program will start ;复位后程序将启动;---------------------------------------------------------------------ldc #istack_top,isp ;设置istack指针(中断堆栈) ldc向专用寄存器ISP传递数据mov.b #02h,0ah ;保护寄存器PRCR PRC1=1 允许写PM0mov.b #00h,04h ;设置处理器模式PM0mov.b #00h,0ah ;关闭写保护.if __STACKSIZE__ != 0ldc #0080h,flg ;设置FLG寄存器IPL和其他状态FLG是16位标志寄存器堆栈指针选择USPldc #stack_top,sp ;设置堆栈指针.elseldc #0000h,flg.endifldc #data_SE_top,sb ;设置SB静态基址寄存器ldintb #__VECTOR_ADR__ ;向INTB寄存器传送指令,所以这里省了目标操作数intb;=====================================================================; NEAR area initialize. ;NEAR区初始化;---------------------- -----------------------------------------------; bss zero clear ;bss零清除;---------------------------------------------------------------------N_BZERO bss_SE_top,bss_SE ;清除NEAR bss段至零N_BZERO bss_SO_top,bss_SO ;N_BZERO清零宏定义N_BZERO bss_NE_top,bss_NE ;sect30.inc中有定义N_BZERO bss_NO_top,bss_NO;---------------------------------------------------------------------; initialize data section ;初始化数据段;---------------------------------------------------------------------N_BCOPY data_SEI_top,data_SE_top,data_SE ;将NEAR数据段和SBDA TA数据段的初始值转移到RAMN_BCOPY data_SOI_top,data_SO_top,data_SO ;N_BCOPY拷贝宏定义N_BCOPY data_NEI_top,data_NE_top,data_NE ;sect30.inc中有定义N_BCOPY data_NOI_top,data_NO_top,data_NO;=====================================================================; FAR area initialize. ;FAR区初始化;---------------------------------------------------------------------; bss zero clear ;bss零清除;---------------------------------------------------------------------.if __FAR_RAM_FLG__ != 0BZERO bss_FE_top,bss_FEBZERO bss_FO_top,bss_FO.endif;---------------------------------------------------------------------; initialize data section ;将FAR段数据段的初始值移到RAM中;---------------------------------------------------------------------.if __FAR_RAM_FLG__ != 0 ;从edata_EI(OI)段复制edata_E(O)段BCOPY data_FEI_top,data_FE_top,data_FEBCOPY data_FOI_top,data_FO_top,data_FOldc #stack_top,sp.stk -40.endif;===================================================================== ; heap area initialize ;堆区初始化;---------------------------------------------------------------------.if __HEAPSIZE__ != 0.glb __mnext.glb __msizemov.w #(heap_top&0FFFFH),__mnextmov.w #(heap_top>>16),__mnext+2mov.w #(__HEAPSIZE__&0FFFFH),__msizemov.w #(__HEAPSIZE__>>16),__msize+2.endif;===================================================================== ; Initialize standard I/O ;初始化标准I/O;---------------------------------------------------------------------.if __STANDARD_IO__ == 1.glb __init.call __init,Gjsr.a __init.endif;===================================================================== ; Call main() function ;调用MAIN函数;---------------------------------------------------------------------ldc #0h,fb ; for debuger 用于调试器.glb _mainjsr.a _main;===================================================================== ; exit() function ;推出函数;---------------------------------------------------------------------.glb _exit.glb $exit_exit: ; End program 结束程序$exit:jmp _exit.einsf;===================================================================== ; dummy interrupt function ;虚设的中断处理函数;---------------------------------------------------------------------.glb dummy_intdummy_int:reit.end;***************************************************************************; C Compiler for R8C/Tiny, M16C/60,30,20,10; Copyright(C) 1999(2000-2006). Renesas Technology Corp.; and Renesas Solutions Corp., All rights reserved.;***************************************************************************映射文件:sect30.inc.映射各个段.设置段的起始地址.定义堆栈和堆段的大小.设置中断向量表.设置固定向量表.宏定义;***************************************************************************; C Compiler for R8C/Tiny, M16C/60,30,20,10; Copyright(C) 1999(2000-2006). Renesas Technology Corp.; and Renesas Solutions Corp., All rights reserved.;; sect30.inc : section definition for M16C family;; $Date: 2007/01/09 04:38:46 $; $Revision: 1.1.4.1 $;***************************************************************************;===================================================================== ;; Arrangement of section ;段的排列;;---------------------------------------------------------------------; Near RAM data area ;Near RAM数据区;---------------------------------------------------------------------; SBDATA area.section data_SE,DATA.org 400Hdata_SE_top:.section bss_SE,DATA,ALIGNbss_SE_top:.section data_SO,DATAdata_SO_top:.section bss_SO,DATAbss_SO_top:; SBDATA area definition.glb __SB____SB__ .equ data_SE_top; near RAM area.section data_NE,DATA,ALIGNdata_NE_top:.section bss_NE,DATA,ALIGNbss_NE_top:.section data_NO,DATAdata_NO_top:.section bss_NO,DATAbss_NO_top:;--------------------------------------------------------------------- ; Stack area ;堆栈区;--------------------------------------------------------------------- .section stack,DATA,ALIGN.blkb __ISTACKSIZE__ ;.blkb分配一字节ram istack_top:.if __STACKSIZE__ != 0.blkb __STACKSIZE__stack_top:.endif;--------------------------------------------------------------------- ; heap section ;heap段;--------------------------------------------------------------------- .if __HEAPSIZE__ != 0.section heap,DATAheap_top:.blkb __HEAPSIZE__.endif;--------------------------------------------------------------------- ; Near ROM data area ;NEAR rom数据区;--------------------------------------------------------------------- .if __NEAR_ROM_FLG__ != 0.section rom_NE,ROMDATA,ALIGNrom_NE_top:.section rom_NO,ROMDATArom_NO_top:.endif;--------------------------------------------------------------------- ; Far RAM data area ;FAR RAM 数据区;--------------------------------------------------------------------- .if __FAR_RAM_FLG__ != 0.section data_FE,DATA.org 10000Hdata_FE_top:.section bss_FE,DATA,ALIGNbss_FE_top:.section data_FO,DATAdata_FO_top:.section bss_FO,DATAbss_FO_top:.endif;--------------------------------------------------------------------- ; Far ROM data area ;FAR ROM 数据;--------------------------------------------------------------------- .section rom_FE,ROMDATA.org __ROM_TOPADR__rom_FE_top:.section rom_FO,ROMDATArom_FO_top:;--------------------------------------------------------------------- ; Initial data of 'data' section ;far rom数据初始化;--------------------------------------------------------------------- .section data_SEI,ROMDATA,ALIGNdata_SEI_top:.section data_SOI,ROMDATAdata_SOI_top:.section data_NEI,ROMDATA,ALIGNdata_NEI_top:.section data_NOI,ROMDATAdata_NOI_top:.if __FAR_RAM_FLG__ != 0.section data_FEI,ROMDATA,ALIGNdata_FEI_top:.section data_FOI,ROMDATAdata_FOI_top:.endif;--------------------------------------------------------------------- ; Switch Table Section;--------------------------------------------------------------------- ; .section switch_table,ROMDATA;switch_table_top:;--------------------------------------------------------------------- ; code area ;代码区;--------------------------------------------------------------------- .section program,CODE,ALIGN.section interrupt,CODE,ALIGN.section program_S,CODE,ALIGN;---------------------------------------------------------------------; variable vector section ;变量向量段;---------------------------------------------------------------------.section vector,ROMDATA.org __VECTOR_ADR__.if 0.lword dummy_int ; vector 0 BRK.lword dummy_int ; vector 1.lword dummy_int ; vector 2.lword dummy_int ; vector 3.lword dummy_int ; vector 4 (for user) int3.lword dummy_int ; vector 5 (for user) timerB5.lword dummy_int ; vector 6 (for user) timerB4.lword dummy_int ; vector 7 (for user) timerB3.lword dummy_int ; vector 8 (for user) si/o4/int5.lword dummy_int ; vector 9 (for user) si/o3/int4.lword dummy_int ; vector 10 (for user) Bus collision detection .lword dummy_int ; vector 11 (for user) DMA0.lword dummy_int ; vector 12 (for user) DMA1.lword dummy_int ; vector 13 (for user) Key input interrupt.lword dummy_int ; vector 14 (for user) A-D.lword dummy_int ; vector 15 (for user) uart2 transmit.lword dummy_int ; vector 16 (for user) uart2 receive.lword dummy_int ; vector 17 (for user) uart0 transmit.lword dummy_int ; vector 18 (for user) uart0 receive.lword dummy_int ; vector 19 (for user) uart1 transmit.lword dummy_int ; vector 20 (for user) uart1 receive.lword dummy_int ; vector 21 (for user) timer A0.lword dummy_int ; vector 22 (for user) timer A1.lword dummy_int ; vector 23 (for user) timer A2.lword dummy_int ; vector 24 (for user) timer A3.lword dummy_int ; vector 25 (for user) timer A4.lword dummy_int ; vector 26 (for user) timer B0.lword dummy_int ; vector 27 (for user) timer B1.lword dummy_int ; vector 28 (for user) timer B2.lword dummy_int ; vector 29 (for user) int0.lword dummy_int ; vector 30 (for user) int1.lword dummy_int ; vector 31 (for user) int2.lword dummy_int ; vector 32 (for user or MR30).lword dummy_int ; vector 33 (for user or MR30).lword dummy_int ; vector 34 (for user or MR30).lword dummy_int ; vector 35 (for user or MR30).lword dummy_int ; vector 36 (for user or MR30).lword dummy_int ; vector 37 (for user or MR30).lword dummy_int ; vector 38 (for user or MR30).lword dummy_int ; vector 39 (for user or MR30).lword dummy_int ; vector 40 (for user or MR30).lword dummy_int ; vector 41 (for user or MR30).lword dummy_int ; vector 42 (for user or MR30).lword dummy_int ; vector 43 (for user or MR30).lword dummy_int ; vector 44 (for user or MR30).lword dummy_int ; vector 45 (for user or MR30).lword dummy_int ; vector 46 (for user or MR30).lword dummy_int ; vector 47 (for user or MR30) .lword dummy_int ; vector 48.lword dummy_int ; vector 49.lword dummy_int ; vector 50.lword dummy_int ; vector 51.lword dummy_int ; vector 52.lword dummy_int ; vector 53.lword dummy_int ; vector 54.lword dummy_int ; vector 55.lword dummy_int ; vector 56.lword dummy_int ; vector 57.lword dummy_int ; vector 58.lword dummy_int ; vector 59.lword dummy_int ; vector 60.lword dummy_int ; vector 61.lword dummy_int ; vector 62.lword dummy_int ; vector 63.endif;--------------------------------------------------------------------- ; fixed vector section ;固定向量段;--------------------------------------------------------------------- .section fvector,ROMDATA.org 0fffdcHUDI:.lword dummy_intOVER_FLOW:.lword dummy_intBRKI:.lword dummy_intADDRESS_MATCH:.lword dummy_intSINGLE_STEP:.lword dummy_intWDT:.lword dummy_intDBC:.lword dummy_intNMI:.lword dummy_intRESET:.lword start;===================================================================== ; ID code & ROM code protect //密码保护设置;---------------------------------------------------------------------; ID code check function.id "#FFFFFFFFFFFFFF"; ROM code protect control address; .protect 00H;===================================================================== ; Initialize Macro declaration //宏定义,ncrt0.30中有使用到;---------------------------------------------------------------------N_BZERO .macro TOP_,SECT_mov.b #00H,R0Lmov.w #(TOP_ & 0FFFFH),A1mov.w #sizeof SECT_,R3sstr.b.endmN_BCOPY .macro FROM_,TO_,SECT_mov.w #(FROM_ & 0FFFFH),A0mov.b #(FROM_ >> 16),R1Hmov.w #TO_,A1mov.w #sizeof SECT_,R3smovf.b.endmBZERO .macro TOP_,SECT_push.w #sizeof SECT_ >> 16push.w #sizeof SECT_ & 0ffffhpusha TOP_ >> 16pusha TOP_ & 0ffffh.stk 8.glb _bzero.call _bzero,Gjsr.a _bzero.endmBCOPY .macro FROM_ ,TO_ ,SECT_push.w #sizeof SECT_ >> 16push.w #sizeof SECT_ & 0ffffhpusha TO_ >> 16pusha TO_ & 0ffffhpusha FROM_ >> 16pusha FROM_ & 0ffffh.stk 12.glb _bcopy.call _bcopy,Gjsr.a _bcopy.endm;*************************************************************************** ; C Compiler for R8C/Tiny, M16C/60,30,20,10; Copyright(C) 1999(2000-2006). Renesas Technology Corp.; and Renesas Solutions Corp., All rights reserved.;***************************************************************************nc_define.inc头文件定义;------------------------------------------------------------------------; |; FILE :nc_define.inc |; DATE :Fri, Dec 18, 2009 |; DESCRIPTION :interrupt program. |; CPU GROUP :29 |; |; This file is generated by Renesas Project Generator (Ver.4.8). |; |;------------------------------------------------------------------------; Macro Symbol definition__NEAR_ROM_FLG__ .equ 0 ; NEAR ROM flag definition__FAR_RAM_FLG__ .equ 0 ; FAR RAM flag definition__STANDARD_IO__ .equ 0 ; STANDARD I/O flag definition__HEAPSIZE__ .equ 0300H ; HEEP SIZE definition__STACKSIZE__ .equ 0300H ; STACK SIZE definition__ISTACKSIZE__ .equ 0300H ; INTERRUPT STACK SIZE definition__VECTOR_ADR__ .equ 0ffd00H ; INTERRUPT VECTOR ADDRESS definition__ROM_TOPADR__ .equ 0F4000H ; ROM TOP ADDRESS definition__SPECIAL_PRG__ .equ 0f8000H ; Special page program address。
Visual C++编译器常用选项设置编译参数的设置。
主要通过IDE的菜单项Project->Settings->C/C++页来完成。
我们可以看到这一页的最下面Project Options中的内容,一般如下:/nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_Windows" /D "_AFXDLL" /D "_MBCS" /Fp"Debug/WritingDlgTest.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c各个参数代表的意义,可以参考Msdn。
比如/nologo表示编译时不在输出窗口显示这些设置(我们可以把这个参数去掉来看看效果)等等。
一般我们不会直接修改这些设置,而是通过这一页最上面的Category中的各项来完成。
1) General:一些总体设置。
Warning level用来控制警告信息,其中Level 1是最严重的级别;Warnings as errors将警告信息当作错误处理;Optimizations是代码优化,可以在Category的Optimizations项中进行更细的设置;Generate browse info用以生成.sbr文件,记录类、变量等符号信息,可以在Category的Listing Files项中进行更多的设置。
Debug info,生成调试信息:None,不产生任何调试信息(编译比较快);Line Numbers Only,仅生成全局的和外部符号的调试信息到.OBJ文件或.EXE文件,减小目标文件的尺寸;C 7.0- Compatible,记录调试器用到的所有符号信息到.OBJ文件和.EXE文件;Program Database,创建.PDB文件记录所有调试信息;Program Database for "Edit & Continue",创建.PDB文件记录所有调试信息,并且支持调试时编辑。