[Info-vax] Hard links on VMS ODS5 disks
Arne Vajhøj
arne at vajhoej.dk
Tue Jul 25 21:32:45 EDT 2023
On 7/25/2023 8:53 PM, Arne Vajhøj wrote:
> On 7/25/2023 8:52 PM, Arne Vajhøj wrote:
>> On 7/24/2023 4:38 AM, hb at end.of.inter.net wrote:
>>> On Monday, July 24, 2023 at 1:31:46 AM UTC+2, Arne Vajhøj wrote:
>>>> But difficult to check the difference between /OPT and /NOOPT,
>>>> because for some unknown reason /LIST/MACH does not list the
>>>> generated code.
>>>
>>> MACRO-32 on x86?
>>
>> Yes.
>>
>>> You can always (except you compile with /NOOBJECT :-) get the machine
>>> code listing with ANALYZE/OBJECT/DISASSEMBLE.
>>
>> I did not know that.
>>
>> But also weird.
>>
>> I do not see a difference between /OPT and /NOOPT at all.
>
> Tested with a trivial piece of code:
>
> .title str
> .psect $CODE quad,pic,con,lcl,shr,exe,nowrt
> .entry str_int_val,^m<r2,r3,r4>
> movl B^4(ap),r0
> movl B^4(r0),r1 ; address of string
> movzwl (r0),r2 ; length of string
> movl #0,r0 ; value=0
> tstl r2 ; test if empty string
> bleq 400$
> clrl r3
> movl #1,r4 ; scale=1
> 100$: movb (r1),r3
> cmpb #32,r3 ; test if " " => skip
> beql 300$
> cmpb #45,r3 ; test if "-" => scale=-1*scale
> bneq 200$
> mull2 #-1,r4
> brb 300$
> 200$: subb2 #48,r3 ; value=10*value+digit
> mull2 #10,r0
> addl2 r3,r0
> 300$: incl r1
> decl r2
> tstl r2
> bgtr 100$
> mull2 r4,r0 ; value=value*scale
> 400$: movl r0, at B^8(ap)
> ret
> .end
On Alpha the code is slightly different.
with /NOOPT:
.PSECT $CODE, QUAD, PIC, CON, REL,
LCL, SHR, EXE, RD, NOWRT
0000 STR_INT_VAL::
23DEFFD0 0000 LDA SP, -48(SP)
B77E0000 0004 STQ R27, (SP)
B75E0008 0008 STQ R26, 8(SP)
B45E0010 000C STQ R2, 16(SP)
B47E0018 0010 STQ R3, 24(SP)
B49E0020 0014 STQ R4, 32(SP)
B7BE0028 0018 STQ FP, 40(SP)
47FE041D 001C MOV SP, FP
0020 $L1:
43F00000 0020 SEXTL R16, R0
; 000004
A0200004 0024 LDL R1, 4(R0)
; 000005
47E10401 0028 MOV R1, R1
2C400000 002C LDQ_U R2, (R0)
; 000006
484002C2 0030 EXTWL R2, R0, R2
F0000028 0034 BLBS R0, $L4
0038 $L5:
47E20402 0038 MOV R2, R2
201F0000 003C LDA R0, (R31)
; 000007
EC400019 0040 BLE R2, 3_400$
; 000009
47FF0403 0044 MOV R31, R3
; 000010
209F0001 0048 LDA R4, 1(R31)
; 000011
004C 3_100$:
; 000012
2F010000 004C LDQ_U R24, (R1)
4B0100D8 0050 EXTBL R24, R1, R24
447FF103 0054 BIC R3, 255, R3
44780403 0058 BIS R3, R24, R3
447FF016 005C AND R3, 255, R22
; 000013
42C41532 0060 SUBQ R22, 32, R18
E640000C 0064 BEQ R18, 3_300$
; 000014
447FF01A 0068 AND R3, 255, R26
; 000015
4345B532 006C SUBQ R26, 45, R18
F6400002 0070 BNE R18, 3_200$
; 000016
C3E00015 0074 BR $L3
C3E00014 0078 BR $L3
; 000017
007C 3_200$:
; 000019
40661139 007C SUBL R3, 48, R25
473FF019 0080 AND R25, 255, R25
447FF103 0084 BIC R3, 255, R3
44790403 0088 BIS R3, R25, R3
40000000 008C ADDL R0, R0, R0
; 000020
40000040 0090 S4ADDL R0, R0, R0
40030000 0094 ADDL R0, R3, R0
; 000021
0098 3_300$:
; 000022
40203001 0098 ADDL R1, 1, R1
40403122 009C SUBL R2, 1, R2
; 000023
FC5FFFEA 00A0 BGT R2, 3_100$
; 000025
4C040000 00A4 MULL R0, R4, R0
; 000026
00A8 3_400$:
; 000027
B0110000 00A8 STL R0, (R17)
00AC $L2:
; 000028
47FD041E 00AC MOV FP, SP
A79E0008 00B0 LDQ R28, 8(SP)
A45E0010 00B4 LDQ R2, 16(SP)
A47E0018 00B8 LDQ R3, 24(SP)
A49E0020 00BC LDQ R4, 32(SP)
A7BE0028 00C0 LDQ FP, 40(SP)
23DE0030 00C4 LDA SP, 48(SP)
6BFC8001 00C8 RET R28
00CC $L3:
; 000017
44840404 00CC BIS R4, R4, R4
43E40124 00D0 SUBL R31, R4, R4
C3FFFFF0 00D4 BR 3_300$
; 000018
00D8 $L4:
; 000006
2F400001 00D8 LDQ_U R26, 1(R0)
4B400B5C 00DC EXTWH R26, R0, R28
445C0402 00E0 BIS R2, R28, R2
C3FFFFD4 00E4 BR $L5
with /OPT:
.PSECT $CODE, QUAD, PIC, CON, REL,
LCL, SHR, EXE, RD, NOWRT
0000 STR_INT_VAL::
23DEFFD0 0000 LDA SP, -48(SP)
B77E0000 0004 STQ R27, (SP)
B75E0008 0008 STQ R26, 8(SP)
B45E0010 000C STQ R2, 16(SP)
B47E0018 0010 STQ R3, 24(SP)
B49E0020 0014 STQ R4, 32(SP)
B7BE0028 0018 STQ FP, 40(SP)
47FE041D 001C MOV SP, FP
0020 $L1:
43F00000 0020 SEXTL R16, R0
; 000004
2C400000 0024 LDQ_U R2, (R0)
; 000006
A0200004 0028 LDL R1, 4(R0)
; 000005
485002C2 002C EXTWL R2, R16, R2
; 000006
F200002F 0030 BLBS R16, $L4
0034 $L5:
47FF0400 0034 CLR R0
; 000007
47FF0403 0038 CLR R3
; 000010
47E03404 003C MOV 1, R4
; 000011
EC40001B 0040 BLE R2, 3_400$
; 000009
2FFE0000 0044 UNOP
2FFE0000 0048 UNOP
2FFE0000 004C UNOP
0050 3_100$:
; 000012
2F010000 0050 LDQ_U R24, (R1)
447FF103 0054 BIC R3, 255, R3
4B0100D8 0058 EXTBL R24, R1, R24
44780403 005C BIS R3, R24, R3
447FF016 0060 AND R3, 255, R22
; 000013
2256FFE0 0064 LDA R18, -32(R22)
E640000D 0068 BEQ R18, 3_300$
; 000014
447FF01A 006C AND R3, 255, R26
; 000015
225AFFD3 0070 LDA R18, -45(R26)
E640001A 0074 BEQ R18, $L3
; 000016
0078 3_200$:
; 000019
40661139 0078 SUBL R3, 48, R25
473FF019 007C AND R25, 255, R25
447FF103 0080 BIC R3, 255, R3
40000000 0084 ADDL R0, R0, R0
; 000020
44790403 0088 BIS R3, R25, R3
; 000019
40000040 008C S4ADDL R0, R0, R0
; 000020
40600000 0090 ADDL R3, R0, R0
; 000021
2FFE0000 0094 UNOP
2FFE0000 0098 UNOP
2FFE0000 009C UNOP
00A0 3_300$:
; 000022
40403122 00A0 SUBL R2, 1, R2
; 000023
40203001 00A4 ADDL R1, 1, R1
; 000022
FC5FFFE9 00A8 BGT R2, 3_100$
; 000025
4C040000 00AC MULL R0, R4, R0
; 000026
00B0 3_400$:
; 000027
B0110000 00B0 STL R0, (R17)
00B4 $L2:
; 000028
47FD041E 00B4 MOV FP, SP
A79D0008 00B8 LDQ R28, 8(FP)
A45D0010 00BC LDQ R2, 16(FP)
A47D0018 00C0 LDQ R3, 24(FP)
A49D0020 00C4 LDQ R4, 32(FP)
A7BD0028 00C8 LDQ FP, 40(FP)
23DE0030 00CC LDA SP, 48(SP)
6BFC8001 00D0 RET R28
2FFE0000 00D4 UNOP
2FFE0000 00D8 UNOP
2FFE0000 00DC UNOP
00E0 $L3:
; 000017
43E40124 00E0 SUBL R31, R4, R4
C3FFFFEE 00E4 BR 3_300$
; 000018
2FFE0000 00E8 UNOP
2FFE0000 00EC UNOP
00F0 $L4:
; 000006
2F400001 00F0 LDQ_U R26, 1(R0)
4B400B5C 00F4 EXTWH R26, R0, R28
445C0402 00F8 BIS R2, R28, R2
C3FFFFCD 00FC BR $L5
Arne
More information about the Info-vax
mailing list