- BYTE arithmetic

From: H. v. Lavergne <"H.>
Date: Thu, 22 Jun 2006 10:24:35 +0200

----boundary-LibPST-iamunique-730103625_-_-
Content-type: text/plain

The language report says:

9.8 For Statements

A for statement specifies the repeated execution of a statement sequence
while a progression of values is assigned to an integer variable called
the control variable of the for statement.

        ForStatement FOR ident ":=" Expression TO Expression [BY ConstExpression]
                DO StatementSequence END.

The statement

        FOR v := beg TO end BY step DO statements END

is equivalent to

temp := end; v := beg;
IF step > 0 THEN
        WHILE v <= temp DO statements; INC(v, step) END
ELSE
        WHILE v >= temp DO statements; INC(v, step) END
END

temp has the same type as v. step must be a nonzero constant expression.
If step is not specified, it is assumed to be 1.

So by the way of implementation

FOR Index := MIN(BYTE) TO MAX(BYTE) - 1 DO
   Out.Int(Index, 5);
END;

runs from index = -128 through index = +126 then finishes, whereas

FOR index := MIN(BYTE) TO MAX(BYTE) DO
   Out.Int(Index, 5);
END;

when reaching index = +127 as on the next step index is increased to
MAX(BYTE) + 1 resulting in index = -128 thus starting the next loop.
This is in accordance with the language report but whether it was a good
idea to implement the FOR loop this way is another question.

H. v. Lavergne

On Thu, 22 Jun 2006 01:20:31 +0200, Rex Couture <rex{([at]})nowhere.xy
wrote:

> At 10:23 AM 6/21/2006, Treutwein Bernhard wrote:
>> Beware also that the following loops for ever:
>>
>> VAR
>> b : BYTE;
>> FOR b := 0 TO MAX(BYTE) DO
>
> This seems to me like an error in the language specification,
> but in any case it can be trapped by integer overflow checking, which
> can be implemented with compiler option '+'.
>
> Rex Couture
>
> --- BlackBox
> --- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy
>
>

--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy



----boundary-LibPST-iamunique-730103625_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIFRoZSBsYW5ndWFnZSByZXBvcnQgc2F5czpccGFy
DQpccGFyDQo5LjggRm9yIFN0YXRlbWVudHNccGFyDQpccGFyDQpBIGZvciBzdGF0ZW1lbnQgc3Bl
Y2lmaWVzIHRoZSByZXBlYXRlZCBleGVjdXRpb24gb2YgYSBzdGF0ZW1lbnQgc2VxdWVuY2UgIFxw
YXINCndoaWxlIGEgcHJvZ3Jlc3Npb24gb2YgdmFsdWVzIGlzIGFzc2lnbmVkIHRvIGFuIGludGVn
ZXIgdmFyaWFibGUgY2FsbGVkICBccGFyDQp0aGUgY29udHJvbCB2YXJpYWJsZSBvZiB0aGUgZm9y
IHN0YXRlbWVudC5ccGFyDQpccGFyDQpcdGFiIEZvclN0YXRlbWVudCA9XHBhcg0KXHRhYiBcdGFi
IEZPUiBpZGVudCAiOj0iIEV4cHJlc3Npb24gVE8gRXhwcmVzc2lvbiBbQlkgQ29uc3RFeHByZXNz
aW9uXVxwYXINClx0YWIgXHRhYiBETyBTdGF0ZW1lbnRTZXF1ZW5jZSBFTkQuXHBhcg0KXHBhcg0K
VGhlIHN0YXRlbWVudFxwYXINClxwYXINClx0YWIgRk9SIHYgOj0gYmVnIFRPIGVuZCBCWSBzdGVw
IERPIHN0YXRlbWVudHMgRU5EXHBhcg0KXHBhcg0KaXMgZXF1aXZhbGVudCB0b1xwYXINClxwYXIN
CnRlbXAgOj0gZW5kOyB2IDo9IGJlZztccGFyDQpJRiBzdGVwID4gMCBUSEVOXHBhcg0KXHRhYiBX
SElMRSB2IDw9IHRlbXAgRE8gc3RhdGVtZW50czsgSU5DKHYsIHN0ZXApIEVORFxwYXINCkVMU0Vc
cGFyDQpcdGFiIFdISUxFIHYgPj0gdGVtcCBETyBzdGF0ZW1lbnRzOyBJTkModiwgc3RlcCkgRU5E
XHBhcg0KRU5EXHBhcg0KXHBhcg0KdGVtcCBoYXMgdGhlIHNhbWUgdHlwZSBhcyB2LiBzdGVwIG11
c3QgYmUgYSBub256ZXJvIGNvbnN0YW50IGV4cHJlc3Npb24uICBccGFyDQpJZiBzdGVwIGlzIG5v
dCBzcGVjaWZpZWQsIGl0IGlzIGFzc3VtZWQgdG8gYmUgMS5ccGFyDQpccGFyDQpTbyBieSB0aGUg
d2F5IG9mIGltcGxlbWVudGF0aW9uXHBhcg0KXHBhcg0KRk9SIEluZGV4IDo9IE1JTihCWVRFKSBU
TyBNQVgoQllURSkgLSAxIERPXHBhcg0KICAgT3V0LkludChJbmRleCwgNSk7XHBhcg0KRU5EO1xw
YXINClxwYXINCnJ1bnMgZnJvbSBpbmRleCA9IC0xMjggdGhyb3VnaCBpbmRleCA9ICsxMjYgdGhl
biBmaW5pc2hlcywgd2hlcmVhc1xwYXINClxwYXINCkZPUiBpbmRleCA6PSBNSU4oQllURSkgVE8g
TUFYKEJZVEUpIERPXHBhcg0KICAgT3V0LkludChJbmRleCwgNSk7XHBhcg0KRU5EO1xwYXINClxw
YXINCndoZW4gcmVhY2hpbmcgaW5kZXggPSArMTI3IGFzIG9uIHRoZSBuZXh0IHN0ZXAgaW5kZXgg
aXMgaW5jcmVhc2VkIHRvICBccGFyDQpNQVgoQllURSkgKyAxIHJlc3VsdGluZyBpbiBpbmRleCA9
IC0xMjggdGh1cyBzdGFydGluZyB0aGUgbmV4dCBsb29wLlxwYXINClRoaXMgaXMgaW4gYWNjb3Jk
YW5jZSB3aXRoIHRoZSBsYW5ndWFnZSByZXBvcnQgYnV0IHdoZXRoZXIgaXQgd2FzIGEgZ29vZCAg
XHBhcg0KaWRlYSB0byBpbXBsZW1lbnQgdGhlIEZPUiBsb29wIHRoaXMgd2F5IGlzIGFub3RoZXIg
cXVlc3Rpb24uXHBhcg0KXHBhcg0KSC4gdi4gTGF2ZXJnbmVccGFyDQpccGFyDQpPbiBUaHUsIDIy
IEp1biAyMDA2IDAxOjIwOjMxICswMjAwLCBSZXggQ291dHVyZSA8cmV4QGxldmVlLnd1c3RsLmVk
dT4gIFxwYXINCndyb3RlOlxwYXINClxwYXINCj4gQXQgMTA6MjMgQU0gNi8yMS8yMDA2LCBUcmV1
dHdlaW4gQmVybmhhcmQgd3JvdGU6XHBhcg0KPj4gQmV3YXJlIGFsc28gdGhhdCB0aGUgZm9sbG93
aW5nIGxvb3BzIGZvciBldmVyOlxwYXINCj4+XHBhcg0KPj4gVkFSXHBhcg0KPj4gIGIgOiBCWVRF
O1xwYXINCj4+IEZPUiBiIDo9IDAgVE8gTUFYKEJZVEUpIERPXHBhcg0KPlxwYXINCj4gICAgICAg
ICBUaGlzIHNlZW1zIHRvIG1lIGxpa2UgYW4gZXJyb3IgaW4gdGhlIGxhbmd1YWdlIHNwZWNpZmlj
YXRpb24sICBccGFyDQo+IGJ1dCBpbiBhbnkgY2FzZSBpdCBjYW4gYmUgdHJhcHBlZCBieSBpbnRl
Z2VyIG92ZXJmbG93IGNoZWNraW5nLCB3aGljaCAgXHBhcg0KPiBjYW4gYmUgaW1wbGVtZW50ZWQg
d2l0aCBjb21waWxlciBvcHRpb24gJysnLlxwYXINCj5ccGFyDQo+IFJleCBDb3V0dXJlXHBhcg0K
PlxwYXINCj4gLS0tIEJsYWNrQm94XHBhcg0KPiAtLS0gc2VuZCBzdWJqZWN0IEhFTFAgb3IgVU5T
VUJTQ1JJQkUgdG8gYmxhY2tib3hAb2Jlcm9uLmNoXHBhcg0KPlxwYXINCj5ccGFyDQpccGFyDQot
LS0gQmxhY2tCb3hccGFyDQotLS0gc2VuZCBzdWJqZWN0IEhFTFAgb3IgVU5TVUJTQ1JJQkUgdG8g
YmxhY2tib3hAb2Jlcm9uLmNoXHBhcg0KfX0AeSBCVA=


----boundary-LibPST-iamunique-730103625_-_---
Received on Thu Jun 22 2006 - 10:24:35 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:27:50 UTC