[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