[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [StrongED] Re: StrongED 4.69b6 available

In message <5374d2466astronged-sub@xxxxxxxxx>
          Frank de Bruijn <stronged-sub@xxxxxxxxx> wrote:

> In article <d6eb9a7453.fjgraute@xxxxxxxxx>,
>    Fred Graute <fjgraute@xxxxxxxxx> wrote:
> > Yes, the value in R8 causes an unaligned load. Now to find where that
> > value came from and how to fix it. Still don't know too much about the
> > StrongHelp internals so that should be fun.
> Yup. Nothing beats trying to figure out other people's code (especially
> if there's Norwegian all over the place...).

The Norwegian isn't such a big problem anymore - after almost 13 years
of StrongED maintenance. Got myself Dutch - Norwegian dictionary very
early on, and these days there is of course Google translate.

A much bigger problem is that there no description of data structures
used. You have to piece it together by reading the code carefully.

> Looking at a pretty old piece of StrongHelp source (version 2.75 from
> 2001), I think R8 is used as the base address of search areas. As these
> areas appear to start at a word boundary, with a guard word and length
> word taking up the first eight bytes, I wonder if the ADD R8,R8,#1 a bit
> before the aborting instruction is correct.

It is a strange bit of code. It seems to look for the guard word and it
apparently can start at any byte in a word. That's why R5 is set to 4
and R8 is increased by one.

Strange thing is that the data structure that's being read from consists
of word size element so why keep it all word-aligned?

Anyway, there is a macro to do unaligned loads (FN_ldr1) and I've used
that instead of loading R5 directly:


   LDR      R5,[R8,#dir_1stfree%-len_dirroot%] ; this is what is used.


   ADD      R1,R8,#dir_1stfree%-len_dirroot%
   FN_ldr1(pass%,5,1, 14,2)

Hopefully that fixes it.


StrongED Developer

To unsubscribe send a mail to StrongED+unsubscribe@xxxxxxxxxxxxxx