5

我正在尝试更深入地了解操作系统。所以,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符号,但我一无所获。switch_to_osf_pal最后,我在以这种方式调用的c文件中找到了switch_to_osf_pal(2, pcb_va, pcb_pa, VPTB);这个带这个参数的函数调用汇编函数吗?

抱歉,如果有太多问题,但我没有找到任何明确的文档

4

1 回答 1

3

__start是一个标签。

ldgp表示在Alpha 程序集中加载全局指针

call_pal表示调用特权架构库。它是无条件跳转到异常处理程序。

汇编程序员指南中的更多信息

于 2013-04-03T14:57:51.783 回答