下一页 发表于 2019-11-13 20:38:24

正点原子的Linux开发指南第七章的开头好像有问题,求指教

随便翻看了一下开发之南,感觉第七章这个前言有问题。

cpu不存在运行汇编还是c的问题,cpu只能识别机器语言,高级语言要经过编译变成汇编,然后再经过汇编变成机器语言去执行,即便是目前的解释型语言,也不过是在最后执行时完成这一步。
arm汇编主要用在bootloader上,而bootloader代码量受限制,要求效率高,用高级语言编程的话,受编译器性能限制,很难保证代码的精炼,所以用汇编。

我是这么理解的,我一直从事在有系统的前提下进行开发,太底层的东西未必准确,求指教。

rom 发表于 2019-11-13 21:55:57

没啥毛病,估计是你理解错了

dukelec 发表于 2019-11-13 22:20:53

本帖最后由 dukelec 于 2019-11-13 22:22 编辑

linux bootloader 的一小部分用到 ASM,原因跟效率也沒啥關係。

浮华一生 发表于 2019-11-14 09:03:57

bootloader 也就那一么一点点汇编。 作用也是为了C进场,初始化一下下。

jackjiao 发表于 2019-11-14 09:25:29

应该是为了c语言里面参数传递,临时变量,中断返回初始化栈地址

WM_CH 发表于 2019-11-14 09:40:47


https://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/html/uboot_starts_analysis.html#why_c_need_stack
应该能帮上忙

正点原子 发表于 2019-11-14 11:34:36

我们通过通俗点的语言来描述的整个过程{:handshake:} 担心入门用户不能理解。但是表达的意思是没有问题的

xjavr 发表于 2019-11-14 11:44:02

没毛病,跟运行效率毛关系没有,代码量有那么点关系,但是不大,4K-8K的代码量,跑C足够了,因为只是初始化DDR,时钟这些,然后就搬到DDR了,也不存在代码量的问题,但是少不了汇编的初始化。

jathenal 发表于 2019-11-14 11:46:47

正点原子 发表于 2019-11-14 11:34
我们通过通俗点的语言来描述的整个过程 担心入门用户不能理解。但是表达的意思是没有问题的 ...

一点小建议,原文中“运行C代码”调整成“运行C生成的代码”,应该就能消除类似LZ的歧义,且保持通俗易懂。

liugu 发表于 2019-11-15 16:05:58

WM_CH 发表于 2019-11-14 09:40
https://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/html/uboot_starts_analysis.h ...

这个是怎么找到的?好详细呀,谢谢

WM_CH 发表于 2019-11-16 07:51:19

liugu 发表于 2019-11-15 16:05
这个是怎么找到的?好详细呀,谢谢

古鸽儿{:lol:}                  

L_Hongzhen 发表于 2019-11-19 16:48:58

不妨看一下这个,BootLoader中的汇编并不是那么必须的

本帖最后由 L_Hongzhen 于 2019-11-19 16:50 编辑

http://blog.sina.com.cn/s/blog_9447904001016c8j.html

zmh169 发表于 2019-11-27 10:19:12

来看牛人的回复
页: [1]
查看完整版本: 正点原子的Linux开发指南第七章的开头好像有问题,求指教