[Q&A]关于入口函数的一个疑问

501007162021 2014-08-21 07:00:43
注:这里以一般ARM体系结构和裸机程序为例,来探讨问题。

ARM芯片一上电,就处在Reset状态,Reset也是异常的一种,其异常向量是0x00。

单纯的从ARM体系结构来讲,ARM一上电,就处在Reset异常,那么ARM就会去执行异常向量表0x00处的代码,然后整个程序就从这里爆发。

从上面的阐述来看,我们并不需要规定程序的入口函数,因为ARM复位后总是从0x00处开始执行,当然我们这里讨论的仅仅是裸机程序。

我的猜想:

“入口函数”只是针对有OS的系统来说的。当我们规定了程序的入口数,那么在程序运行的时候,OS会负责找到程序的“入口”,然后让PC指到这个“入口”,然后程序就从这个“入口”爆发。

以上是我的一点愚见,同时它也是我的困扰。希望有相关经验的同学,能够指点一二。
...全文
995 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly 100% 2014-10-11
  • 打赏
  • 举报
回复
基础就是从0地址开始运行  至于其他的都是跳转或者运行过去的   
猪头三小队长 2014-09-22
  • 打赏
  • 举报
回复
入口函数只是一个笼统的概念而已,比如你在gcc下写c代码的话,入口函数就是指定.c中的main函数,而在一个从根开始的嵌入式系统中,入口函数是你指定编在cpu复位指针的那部分汇编代码,linux的c入口函数是start_kernel等等。 只是一个概念,你也可以自己写一个模块,然后告诉别人:“我这个模块的入口函数是ioctl_xxxx()”。
mymtom 2014-09-15
  • 打赏
  • 举报
回复
比如一般的c程序的入口是main WIN32程序的入口是WinMain
501007162021 2014-09-15
  • 打赏
  • 举报
回复
引用 3 楼 mymtom 的回复:
不用猜想啊 入口就是入口,就是在特定情况下的起点呀。
你能解释一下入口函数吗?
501007162021 2014-09-15
  • 打赏
  • 举报
回复
引用 2 楼 xinzha 的回复:
文件系统的存在是有意义的,可以让你通过名字或者符号找到存储在磁盘上的可执行文件。 另外保护式操作系统以及动态链接技术等也在这神奇的程序执行中起到了重要作用。 对于一次编译只能执行固定代码的嵌入式系统就另说了,在链接过程中所有的函数地址都已经写在了二进制代码中,cpu所做的只是在各种中断异常的驱动下去执行代码而已。
你能解释一下什么是入口函数吗?谢谢!
mymtom 2014-09-12
  • 打赏
  • 举报
回复
不用猜想啊 入口就是入口,就是在特定情况下的起点呀。
猪头三小队长 2014-08-22
  • 打赏
  • 举报
回复
文件系统的存在是有意义的,可以让你通过名字或者符号找到存储在磁盘上的可执行文件。 另外保护式操作系统以及动态链接技术等也在这神奇的程序执行中起到了重要作用。 对于一次编译只能执行固定代码的嵌入式系统就另说了,在链接过程中所有的函数地址都已经写在了二进制代码中,cpu所做的只是在各种中断异常的驱动下去执行代码而已。
zhxianbin 2014-08-21
  • 打赏
  • 举报
回复
不知什么意思,入口函数的名字当然不是固定的

1,025

社区成员

发帖
与我相关
我的任务
社区描述
Linux /Unix kernel支持不同的硬件体系,X86, ARM, MIPS, 等等
社区管理员
  • CPU和硬件区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧