新建一个keil的工程
我选择的atmel的52mcu 如果不加载任何c文件,编译的时候会有2个warning大意是
有
没被定义的?C_START) 但是我们仔细看一下反汇编窗口,这个文件的功能是正常的(1、置7F以下单元为0,2、置SP为07,3、跳到程序开始的地方) 如果定义一个char型的变量这个时候这个文件汇编成1、置7F以下单元为0,2、置SP为08,3、LJMP MAIN) 1、会不会是 这个编译器在 寻找MAIN,当没有.c文件的时候,因为它找不到MAIN函数,所以发出警告,可是为什么警告*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL?并且这是编译器强制将这句话解释为跳转到程序开始的地方,当如果有.c文件的时候,则跳到main。 2、sp初始化的值?=07+使用的data资源?在没有.c文件时,#?STACK起什么作用?为什么没有关于它的警告? 1、如果全部用汇编写代码,是否需要startup文件?(我觉得,不要 应该是可以,因为这段代码的功能通过汇编都可以自己写?我想问的是 如果用它,怎么写自己的汇编程序保证1、startup可以跳转到自己的汇编程序2、在code空间中能否刚好衔接) 2、在c中嵌入汇编是,如何方便地得出变量的地址(或者用某种记号代替变量的地址,只要编译器能认识) 3、大家用不用 keil 编译器,用不用汇编编程,觉得keil怎么样?看看对应的汇编代码我觉得太烂了,指向xdata的指针加1,用inc dptr就可以,它折腾了老半天 |