Code: Select all
MODULE M;
IMPORT SYSTEM;
TYPE R = RECORD a0: INTEGER END;
VAR rm: R;
PROCEDURE p1;
VAR ch: CHAR;
BEGIN
SYSTEM.GET(rm.a0, ch, 1)
END p1;
END M.
Code: Select all
SYSTEM.GET(rm.a0, ch, 1);
. 140 08CH 0480EH ldr r0,[pc,#56] -> 200
. 142 08EH 06800H ldr r0,[r0]
. 144 090H 07801H ldrb r1,[r0]
. 146 092H 03001H adds r0,#1
. 148 094H 0AA00H add r2,sp,#0
. 150 096H 07011H strb r1,[r2]
. 152 098H 06000H str r0,[r0] <==
These related cases work properly, also for SYSTEM.PUT:
Code: Select all
MODULE M;
IMPORT SYSTEM;
TYPE R = RECORD a0: INTEGER END;
VAR a0: INTEGER;
PROCEDURE p2;
VAR ch: CHAR; b0: INTEGER; rl: R;
BEGIN
SYSTEM.GET(rl.a0, ch, 1);
SYSTEM.GET(a0, ch, 1);
SYSTEM.GET(b0, ch, 1)
END p2;
END M.
Code: Select all
SYSTEM.GET(rl.a0, ch, 1);
. 154 09AH 09802H ldr r0,[sp,#8]
. 156 09CH 07801H ldrb r1,[r0]
. 158 09EH 03001H adds r0,#1
. 160 0A0H 0AA00H add r2,sp,#0
. 162 0A2H 07011H strb r1,[r2]
. 164 0A4H 09002H str r0,[sp,#8]
SYSTEM.GET(a0, ch, 1);
. 166 0A6H 04809H ldr r0,[pc,#36] -> 204
. 168 0A8H 06800H ldr r0,[r0]
. 170 0AAH 07801H ldrb r1,[r0]
. 172 0ACH 03001H adds r0,#1
. 174 0AEH 0AA00H add r2,sp,#0
. 176 0B0H 07011H strb r1,[r2]
. 178 0B2H 04906H ldr r1,[pc,#24] -> 204
. 180 0B4H 06008H str r0,[r1]
SYSTEM.GET(b0, ch, 1)
. 182 0B6H 09801H ldr r0,[sp,#4]
. 184 0B8H 07801H ldrb r1,[r0]
. 186 0BAH 03001H adds r0,#1
. 188 0BCH 0AA00H add r2,sp,#0
. 190 0BEH 07011H strb r1,[r2]
. 192 0C0H 09001H str r0,[sp,#4]