xixiyao890
驱动牛犊
驱动牛犊
  • 注册日期2003-01-12
  • 最后登录2004-09-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1008回复:0

请教高手关于流水线的问题

楼主#
更多 发布于:2003-07-03 09:54
我用的是c5409芯片做音频编解码,现在用汇编时遇到一个严重的问题:程序单步执行肯定是对的,但是全速执行就会出错,但是出错的地方很不固定,也就是说同样的错误不是每一次都犯,所以导致结果每次都不能完全一样(应该是一样的)。我很困难地找到四个地方,改了一下,使语句不是那么紧凑,也加了一些NOP,但是现在发现这样的地方很多,而且出错的地方随机性更大(就是有时两个大循环就出错,但是下一次可能五六个大循环才出错),这让我调试起来非常困难。而且我想,流水线冲突应该每次都错吧,我现在这个错误是不是硬件性能跟不上导致的(之前用C语言做,速度是汇编的3倍,但重来不出错),请高手指教!
举例:
    LD    @1h, B
    SUB   @2h, B
    LD    @3h, 2, A
    SUB   @4h, A
    ABS   A, A
    SUB   @4h, -3, A, A
    BCD   L1, BLT
    LD    @5h, B
    LD    @6h, A
    XC    1, ALT   ********此处易出错
    LD    #0h, A
L1: SUB   @5h, A
    ADD   A, -4, B
    STL   B, @5h
相应的c语言是:
if( @1h < @2h )     @5h += ( @6h - @5h ) >> 4
else if( abs( (@3h << 2) - @4h ) >= (@4h >> 3) )
              @5h += ( @6h - @5h ) >> 4
else          @5h += ( - @5h ) >> 4

  


游客

返回顶部