linux – 了解os bootloading – assembly
发布时间:2020-11-18 01:54:51 所属栏目:Linux 来源:互联网
导读:我正试图更深入地理解.因此, linux启动必须处理一个程序集文件.我知道mov,push,pop,但在这里我很遗憾: .globl __start .ent __start__start: br $29,2f2: ldgp $29,0($29) jsr $26,start_kernel call_pal PAL_halt .end _
|
我正试图更深入地理解.因此,linux启动必须处理一个程序集文件.我知道mov,push,pop,但在这里我很遗憾: .globl __start
.ent __start
__start:
br $29,2f
2: ldgp $29,0($29)
jsr $26,start_kernel
call_pal PAL_halt
.end __start
switch_to_osf_pal:
subq $30,128,$30
...
如果我说__start是一个标签,我是否正确?一旦它被另一个代码和平调用,它会被调用吗?我试图谷歌周围了解ldgp,或call_pal符号,但我什么都没发现.最后,我在c文件中发现switch_to_osf_pal以这种方式调用switch_to_osf_pal(2,pcb_va,pcb_pa,VPTB);这个函数用这个函数调用汇编函数吗? 对不起,如果有很多问题,但我没有找到任何明确的文档 解决方法__start是一个标签.ldgp表示在Alpha assembly中加载全局指针. call_palmeans调用特权架构库.它是一个无条件跳转到异常处理程序. 更多信息,请参见Assembly Programmer’s Guide (编辑:南阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 将GDB通过串口连接到KGDB构建内核的问题
- linux-kernel – in_irq()可靠吗?
- 为什么/usr/include/linux/stddef.h为空?
- linux – 我怎么知道MongoDB是否需要更多CPU / R
- Hazelcast服务器作为linux服务
- Linux上的编译器是否支持Objective-C块?
- Fast portable non-blocking network programmin
- Linux操作系统.如何禁用所有日志?
- linux – 来自CoreOS的Docker和Rocket有什么区别
- LINUX教程:TensorFlow安装及Jupyter Notebook配
热点阅读
