粗窥STARTUP.A51和INIT.A51
也许大家曾经注意过使用Keil C51来编译链接生成目标代码之后,在我们的主程序之前有些代码不是我们写的,它们从哪里来的?
Keil C51的\C51\LIB目录下有STARTUP.A51和INIT.A51两个文件,前者保存的是启动代码,而后者保存的是初始化代码。这些代码都是在我们的C主程序之前运行的,在复位之后,立即运行的是STARTUP。之后STARTUP调用INIT来初始化程序的全局变量。最后INIT调用C程序的main函数。
这两个文件均为汇编写成,它们都包含在Keil C库中。若我们没有将STARTUP.A51和INIT.A51复制并修改然后包含进我们的project中,则链接器会自动从库文件中把缺省的内容链接进目标代码。
有关STARTUP.A51和INIT.A51的更详细内容可以参考Keil C51 Compiler User's Guide。
====
http://blog.21ic.com/user1/908/archives/2005/1506.html
----------------------------------------------------------------------------------------------
80C51 在电源重置后(Power On Reset)所执行的第一个程序模块并不是使用者的主程序
main(),而是一个隐藏在KEIL-C51 标准链接库中称为startup.a51 的程序模块。
startup.a51 的主要工作是把包含idata、xdata、pdata 在内的内存区块清除为0,并
且初始化递归指针。接着startup.a51 被执行的仍然是一个隐藏在KEIL-C51 标准链接库
中称为init.a51 的程序模块。而init.a51 的主要工作则是初始化具有非零初始值设定的
变量。
在完成上述的初始化程序之后,80C51 的控制权才会交给main() 开始执行使用者的程序。
====
http://blog.csdn.net/pang123hui/article/details/6955646
粗窥STARTUP.A51和INIT.A51的更多相关文章
- 从事务角度粗窥架构的可扩展性和可维护性:内容整理自java web轻量级开发面试教程
大家多少了解过架构,也听说过使用架构后,代码和可维护性和重用性能大大提升.这里我们来通过一些关于事务的实例,来感性地体会下架构带来的在可维护性方面的便利.本文来是从 java web轻量级开发面试教程 ...
- oracle启动 init.ora spfile pfile[转]
昨天晚上快下班的时候,公司数据库突然堵住了,一个buf表中累计了20多W的数据提取不出来,改了程序,效果不明显.因为之前有一次也重启过oracle,所以这次还是想把oracle重启一下,因为那些数据都 ...
- QA Issue: PN: startUp is upper case, this can result in unexpected behavior. [uppercase-pn]
(借用一下) 该错误直接导致生成开机启动程序无法启动,既无法生成S99***快捷链接. 解决方法:仅仅将recpie lib-Test改成lib-test就可以了,即不要有大写字母. 附启动方法: S ...
- [转]keil使用详解
第一节 系统概述 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上.结构性.可读性.可维护性上有明显的优势,因而易学易用.用过 ...
- KeilC51高级编程
第一节 绝对地址访问 C51提供了三种访问绝对地址的方法: 1. 绝对宏: 在程序中,用“#include<absacc.h>”即可使用其中定义的宏来访问绝对地址,包括: CBYTE.XB ...
- KeilC51使用详解 (二)
深入理解并应用C51对标准ANSIC的扩展是学习C51的关键之一.因为大多数扩展功能都是直接针对8051系列CPU硬件的.大致有以下8类: 8051存储类型及存储区域 存储模式 存储器类型声明 变量类 ...
- KEIL C51高级编程
第一节 绝对地址访问C51提供了三种访问绝对地址的方法: 1. 绝对宏:在程序中,用“#include”即可使用其中定义的宏来访问绝对地址,包括:CBYTE.XBYTE.PWORD.DBYTE.CWO ...
- Keil C51 知识点
第一节 Keil C51扩展关键字 深入理解并应用C51对标准ANSIC的扩展是学习C51的关键之一.因为大多数扩展功能都是直接针对8051系列CPU硬件的.大致有以下8类: 8051存储类型 ...
- 能让汇编转到C51的初学者有更清晰的认识的一篇文章
8051 是傳統 CISC 架構微控制器的代表,而 PIC 則是現代 RISC 架構微控制器的佳作. 雖然說 RISC 架構是公認未來微控制器的主流,但是 8051 藉著累積多年的發展環境與資源,特別 ...
随机推荐
- photoshop sdk
http://blogs.adobe.com/photoshop/2013/09/introducing-adobe-generator-for-photoshop-cc.html
- c#进程间通信(Inter-Process Communication)
原文:c#进程间通信(Inter-Process Communication) c#进程间通信(IPC, Inter-Process Communication) 接收端: using System; ...
- spring framework 4 源码阅读(1) --- 前期准备
在开始看代码之前,需要做的第一件事是下载代码. 在这里:https://github.com/spring-projects/spring-framework 下载完成了发现使用gradle做的源代码 ...
- Windows 8.1下使用IE 64位
Internet Options -> Advanced -> Settings Security组 对Enable 64-bit processes for Enhanced Prote ...
- usaco5.5-Hidden Passwords
最小表示法,感觉可以做成个模板,第一次RE是因为字符串长度变2倍了而我把数组开小了 Executing... Test 1: TEST OK [0.008 secs, 3760 KB] Tes ...
- JAVA并发实现四(守护线程和线程阻塞)
守护线程 Java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) 用户线程即运行在前台的线程,而守护线程是运行在后台的线程. 守护线程作用是为其他前台 ...
- Quartz定时调度CronTrigger时间配置格式说明与实例
1. CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许的通配符 ...
- java.lang.NoClassDefFoundError 异常
在项目实施过程中,当访问某一个功能时,出现异常为 java.lang.NoClassDefFoundError com/xxx/yyy/Zzzz > ,检查发现这个类实际已经存在于应用服务器 ...
- Eclipse+Java+OpenCV246人脸识别
1.环境搭建:见上一篇博客 整个项目的结构图: 2.编写DetectFaceDemo.java,代码如下: package com.njupt.zhb.test; import org.opencv. ...
- unity的坑
http://dearymz.blog.163.com/blog/static/20565742013341916919/ 编辑器: Hierarchy窗口中是场景中的Game Object列表 Pr ...