查看: 9236|回复: 6

[其他] 关于MCF5329启动代码问题(汇编)

[复制链接]

该用户从未签到

1

主题

3

帖子

0

新手上路

Rank: 1

积分
0
最后登录
1970-1-1
发表于 2010-4-15 13:48:55 | 显示全部楼层 |阅读模式
mcf5xxx_wr_vbr:
_mcf5xxx_wr_vbr:
 move.l 4(SP),D0
    .long   0x4e7b0801      /* movec d0,VBR */
 nop
 rts
 
这段汇编 是CW for coldfire 6.3 建立工程文件之后源文件里一个汇编文件(mcf5xxx.s)的函数,我在分析整个MCF5329芯片上电开始程序执行步骤的时候看到这段代码的,小弟汇编学的不是很多,大体看的懂,先是把参数放到D0中,之后就不明白了,对那个 .long  百思不得其解,为什么那句汇编的意思是movec d0,VBR ,不知可有高人代为解惑,谢谢!
我知道答案 目前已有5人回答
回复

使用道具 举报

该用户从未签到

1

主题

3

帖子

0

新手上路

Rank: 1

积分
0
最后登录
1970-1-1
 楼主| 发表于 2010-4-15 13:49:29 | 显示全部楼层

RE:关于MCF5329启动代码问题(汇编)

自己顶
  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-4-15 14:29:08 | 显示全部楼层

    RE:关于MCF5329启动代码问题(汇编)

    move.l 4(SP),D0 将4(SP)的低位给了D0,这个可能是启动前代码或者向量列表地址的指向。
    .LONG 是汇编语言,你可以在基础资料中看到。
    该会员没有填写今日想说内容.

    该用户从未签到

    1

    主题

    3

    帖子

    0

    新手上路

    Rank: 1

    积分
    0
    最后登录
    1970-1-1
     楼主| 发表于 2010-4-15 14:48:20 | 显示全部楼层

    回复:关于MCF5329启动代码问题(汇编)

    回复第 3 楼 安 于2010-04-15 06:29:08发表:
    move.l 4(SP),D0 将4(SP)的低位给了D0,这个可能是启动前代码或者向量列表地址的指向。
    .LONG 是汇编语言,你可以在基础资料中看到。 

    .long



    Declares an initialized block of 32-bit short integers.
    [label] .long expression [, expression]
    Parameters


    label

    Name of the block of integers.

    expression

    Value for 32 bits of the block; must fit into 32 bits.
     
    startup.c中是这样调用的
    mcf5xxx_wr_vbr((uint32)__VECTOR_RAM);
    我不明白的是这个函数是如何操作了VBR寄存器的

    该用户从未签到

    3

    主题

    87

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    306
    最后登录
    1970-1-1
    发表于 2010-4-17 11:43:41 | 显示全部楼层

    RE:关于MCF5329启动代码问题(汇编)

    0x4e7b0801是“movec d0,VBR 的机器码”,你看看编程手册, 0x4E7B就是MOVEC指令,后面的0表示D0,后面的801指的是VBR,在编程手册中MOVEC的介绍都有详细的解释。

    该用户从未签到

    5

    主题

    22

    帖子

    0

    新手上路

    Rank: 1

    积分
    42
    最后登录
    1970-1-1
    发表于 2010-7-23 17:03:40 | 显示全部楼层

    回复:关于MCF5329启动代码问题(汇编)

    回复第 4 楼 yuyansulei于2010-04-15 06:48:20发表:
    回复第 3 楼 安 于2010-04-15 06:29:08发表:
    move.l 4(SP),D0 将4(SP)的低位给了D0,这个可能是启动前代码或者向量列表地址的指向。
    .LONG 是汇编语言,你可以在基础资料中看到。 

    .long



    Declares an initialized block of 32-bit short integers.
    [label] .long expression [, expression]
    Parameters


    label

    Name of the block of integers.

    expression

    Value for 32 bits of the block; must fit into 32 bits.
     
    startup.c中是这样调用的
    mcf5xxx_wr_vbr((uint32)__VECTOR_RAM);
    我不明白的是这个函数是如何操作了VBR寄存器的
     

    我的理解是:(uint32)__VECTOR_RAM作为函数的参数,该函数执行时,它的参数被压栈了,所以SP的内容就是__VECTOR_RAM的地址,把SP的值赋给VBR寄存器,就相当于把__VECTOR_RAM的地址赋给了VBR寄存器。

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    2
    最后登录
    1970-1-1
    发表于 2011-7-5 16:41:21 | 显示全部楼层

    Coole übersichtlich

    Tolle Texte die auf jedenfall auch anderen gefallen duerfte. Aber auch meine Homepage dürfte gefallen auch wenn sie sich um Sexgirls dreht, aber voellig private Girls zeigt.          Und hier ist meine persoenliche Seite Amateursex
    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-26 07:56 , Processed in 0.097119 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表