Subject: [rohc] Implementors Guide for Sigcomp - a correction

From: "John Barber" <[email-masked]>
Date: Tue, 4 Oct 2005 12:37:36 +0100

Hi,

This looks like an error in the document
http://www.ietf.org/internet-drafts/draft-ietf-rohc-sigcomp-impl-guide-0
5.txt:

See section 3.2 Multiload:

</quote>
For example:

   at (64)

   :location_a                     pad (2)
   :location_b                     pad (2)
   :location_c                     pad (2)

   align (64)

   MULTILOAD (location_a, 3, circular_buffer,
                   udvm_memory_size, $location_a)

   Once the MULTILOAD has been executed, location_c must contain
   circular_buffer.
<quote/>

This contradicts Sigcomp Section 9.2.2 (last paragraph) which states
that a decompression failure should occur in the case of a
self-modifying MULTILOAD instruction (such as this is).

Regards, John

_______________________________________________
Rohc mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/rohc

---

From: "Surtees, Abigail" <[email-masked]>
Date: Tue, 4 Oct 2005 15:19:13 +0100

Hi John, all,

I don't think it does contradict section 9.2.2 - that's the section it's
meant to clarify.  However, I can see the confusion so it probably needs
to be clarified more clearly!

In section 9.2.2 "memory locations held by the instruction (including
its operands) itself" means the memory taken up by the instruction and
the 1-3 byte representations of its parameters.  It does not include any
memory referred to by the parameters.  Consequently ':location_a' is not
part of the instruction and so the instruction is not being overwritten.

Would the addition of the sentence 'The memory area that must not be
modified by the execution is that between the byte of the MULTILOAD
opcode and the final byte of the final operand.' add suitable
clarification?

Best regards,

Abbie

> -----Original Message-----
> From: [email-masked] [mailto:[email-masked]] On 
> Behalf Of John Barber
> Sent: Tuesday, October 04, 2005 12:38 PM
> To: [email-masked]
> Subject: [rohc] Implementors Guide for Sigcomp - a correction
> 
> 
> Hi
>

---

From: "John Barber" <[email-masked]>
Date: Thu, 6 Oct 2005 11:57:09 +0100

Hello again Abbie,

Sorry, you're absolutely right, there is no contradiction. I was
misreading the "align 64" as meaning "at 64" hence I thought the
instruction would be self-modifying. It makes sense now.

Perhaps a detailed commentary of the code would help to get the message
across?

My suggestion:

"In this example, the code is not self-modifying - the memory locations
taken up by the instruction opcode and operands are not modified.
However, in the first step of MULTILOAD execution, the address of
circular_buffer is stored in the two bytes at location_a, machine
address 64. In the third step of the MULTILOAD execution (processing of
parameter $location_a), the value stored at location_a is accessed using
operand indirection, and the result of this operation is stored at
location_c. For correct operation, the value stored at location_c in
this example must be the address of circular_buffer. That is to say, the
evaluation of indirection for a MULTILOAD operand must be performed
after the memory updates caused by previous steps of the MULTILOAD
execution." 

...but I'm sure you can improve on this.

Best regards, John

> From: Surtees, Abigail [mailto:[email-masked]] 
> Sent: 04 October 2005 15:19
> To: John Barber; [email-masked]
> Subject: RE: [rohc] Implementors Guide for Sigcomp - a correction
> 
> Hi John, all,
> 
> I don't think it does contradict section 9.2.2 - that's the 
> section it's meant to clarify.  However, I can see the 
> confusion so it probably needs to be clarified more clearly!
> 
> In section 9.2.2 "memory locations held by the instruction 
> (including its operands) itself" means the memory taken up by 
> the instruction and the 1-3 byte representations of its 
> parameters.  It does not include any memory referred to by 
> the parameters.  Consequently ':location_a' is not part of 
> the instruction and so the instruction is not being overwritten.
> 
> Would the addition of the sentence 'The memory area that must 
> not be modified by the execution is that between the byte of 
> the MULTILOAD opcode and the final byte of the final 
> operand.' add suitable clarification?
> 
> Best regards,
> 
> Abbie
> 
> 
> > From: [email-masked] [mailto:[email-masked]] 
> On Behalf 
> > Of John Barber