0% found this document useful (0 votes)
7 views10 pages

Dryarml 3

The document contains assembly code for an ARMv8-A architecture, defining several functions including Proc0, Proc1, Proc2, and Proc3. These functions perform various operations related to benchmarking, memory allocation, and string manipulation. The code includes data sections for global variables and strings used in the program.

Uploaded by

timestruckme
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views10 pages

Dryarml 3

The document contains assembly code for an ARMv8-A architecture, defining several functions including Proc0, Proc1, Proc2, and Proc3. These functions perform various operations related to benchmarking, memory allocation, and string manipulation. The code includes data sections for global variables and strings used in the program.

Uploaded by

timestruckme
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

.

arch armv8-a
.file "drystone.c"
.text
.align 2
.p2align 3,,7
.global Proc1
.type Proc1, %function
Proc1:
.LFB51:
.cfi_startproc
adrp x2, :got:PtrGlb
adrp x4, :got:IntGlob
ldr x3, [x0]
mov w5, 5
ldr x2, [x2, #:got_lo12:PtrGlb]
ldr x4, [x4, #:got_lo12:IntGlob]
ldr x1, [x2]
ldp x6, x7, [x1]
stp x6, x7, [x3]
ldr w6, [x4]
ldp x8, x9, [x1, 16]
stp x8, x9, [x3, 16]
add w7, w6, 12
ldp x8, x9, [x1, 32]
stp x8, x9, [x3, 32]
ldr x4, [x0]
ldr x8, [x1, 48]
str x8, [x3, 48]
str w5, [x0, 16]
str x4, [x4]
str w5, [x4, 16]
ldr x4, [x0]
ldr x3, [x1]
ldr x1, [x4]
str x3, [x1]
ldr x2, [x2]
ldr x1, [x0]
str w7, [x2, 16]
ldr w3, [x1, 8]
cbz w3, .L11
ldp x2, x3, [x1]
stp x2, x3, [x0]
ldp x2, x3, [x1, 16]
stp x2, x3, [x0, 16]
ldp x2, x3, [x1, 32]
stp x2, x3, [x0, 32]
ldr x1, [x1, 48]
str x1, [x0, 48]
mov w0, 0
ret
.p2align 2,,3
.L11:
mov w3, 6
str w3, [x1, 16]
ldr w3, [x0, 12]
cmp w3, 2
beq .L3
mov w4, 3
str w4, [x1, 12]
cmp w3, 1
beq .L4
bls .L9
cmp w3, 4
bne .L7
mov w3, 2
str w3, [x1, 12]
.L7:
ldr x2, [x2]
str x2, [x1]
ldr x1, [x0]
ldr w0, [x1, 16]
add w0, w0, 12
str w0, [x1, 16]
mov w0, 0
ret
.p2align 2,,3
.L4:
cmp w6, 100
ble .L7
.L9:
str wzr, [x1, 12]
b .L7
.p2align 2,,3
.L3:
mov w3, 1
str w3, [x1, 12]
b .L7
.cfi_endproc
.LFE51:
.size Proc1, .-Proc1
.section .rodata.str1.8,"aMS",@progbits,1
.align 3
.LC0:
.string "DHRYSTONE PROGRAM, SOME STRING"
.align 3
.LC2:
.string "Dhrystone time for %ld passes = %ld\n"
.align 3
.LC3:
.string "This machine benchmarks at %ld dhrystones/second\n"
.text
.align 2
.p2align 3,,7
.global Proc0
.type Proc0, %function
Proc0:
.LFB50:
.cfi_startproc
stp x29, x30, [sp, -240]!
.cfi_def_cfa_offset 240
.cfi_offset 29, -240
.cfi_offset 30, -232
adrp x1, :got:__stack_chk_guard
mov w0, 0
mov x29, sp
ldr x2, [x1, #:got_lo12:__stack_chk_guard]
stp x19, x20, [sp, 16]
.cfi_offset 19, -224
.cfi_offset 20, -216
adrp x20, :got:PtrGlb
ldr x1, [x2]
str x1, [sp, 232]
mov x1,0
stp x21, x22, [sp, 32]
mov w19, 61568
stp x23, x24, [sp, 48]
.cfi_offset 21, -208
.cfi_offset 22, -200
.cfi_offset 23, -192
.cfi_offset 24, -184
add x24, sp, 168
movk w19, 0x2fa, lsl 16
stp x25, x26, [sp, 64]
.cfi_offset 25, -176
.cfi_offset 26, -168
add x26, sp, 200
adrp x23, :got:Array1Glob
stp x27, x28, [sp, 80]
.cfi_offset 27, -160
.cfi_offset 28, -152
bl time
mov x21, x0
mov w0, 0
bl time
mov x2, x0
mov x0, 56
sub x1, x2, x21
str x1, [sp, 144]
adrp x28, :got:BoolGlob
adrp x22, :got:Array2Glob
adrp x21, :got:IntGlob
bl malloc
mov x25, x0
adrp x2, :got:PtrGlbNext
mov x0, 56
ldr x2, [x2, #:got_lo12:PtrGlbNext]
str x25, [x2]
bl malloc
adrp x3, .LC0
mov x2, x0
add x3, x3, :lo12:.LC0
adrp x1, .LC4
ldr x5, [x20, #:got_lo12:PtrGlb]
mov w6, 40
ldr d0, [x1, #:lo12:.LC4]
add x4, x0, 20
str w6, [x2, 16]
mov w0, 0
ldr x6, [x3, 16]
str x6, [x2, 36]
ldp x6, x7, [x3]
str x25, [x2]
str x2, [x5]
str d0, [x2, 8]
ldr x2, [x3, 23]
stp x6, x7, [x4]
str x2, [x4, 23]
bl time
str x0, [sp, 152]
adrp x2, .LC1
adrp x3, :got:Char1Glob
add x2, x2, :lo12:.LC1
ldrb w1, [sp, 169]
ldr x0, [x3, #:got_lo12:Char1Glob]
str w1, [sp, 100]
str x0, [sp, 104]
ldp x0, x1, [x2]
stp x0, x1, [sp, 112]
ldr x0, [x2, 16]
str x0, [sp, 128]
ldr x0, [x2, 23]
str x0, [sp, 136]
.p2align 3,,7
.L17:
adrp x1, :got:Char2Glob
mov w2, 65
ldr x27, [x28, #:got_lo12:BoolGlob]
ldr x25, [x1, #:got_lo12:Char2Glob]
ldr x1, [sp, 104]
str wzr, [x27]
ldr x0, [sp, 128]
str x0, [x26, 16]
mov w0, 66
strb w2, [x1]
strb w0, [x25]
ldp x2, x3, [sp, 112]
stp x2, x3, [x26]
ldr w1, [sp, 100]
ldr x0, [sp, 136]
str x0, [x26, 23]
cmp w1, 82
beq .L14
mov x1, x26
mov x0, x24
bl strcmp
cmp w0, 0
ldr x2, [x22, #:got_lo12:Array2Glob]
movi v0.2s, 0x7
ldr x4, [x20, #:got_lo12:PtrGlb]
cset w11, le
ldr x3, [x23, #:got_lo12:Array1Glob]
mov x9, 34359738376
ldr x0, [x4]
mov w8, 7
ldr w4, [x2, 1660]
mov w10, 8
ldr x5, [x21, #:got_lo12:IntGlob]
add w4, w4, 1
mov w7, 5
str w10, [x3, 152]
str x9, [x2, 1664]
str w7, [x5]
str w11, [x27]
str d0, [x3, 32]
str w4, [x2, 1660]
str w8, [x2, 5744]
bl Proc1
ldrb w3, [x25]
cmp w3, 64
bls .L15
mov w2, 65
.p2align 3,,7
.L16:
add w0, w2, 1
and w2, w0, 255
cmp w3, w0, uxtb
bcs .L16
.L15:
subs w19, w19, #1
bne .L17
mov w0, 0
bl time
ldr x1, [sp, 152]
mov x20, 61568
movk x20, 0x2fa, lsl 16
mov x2, x20
sub x19, x0, x1
adrp x1, .LC2
ldr x0, [sp, 144]
add x1, x1, :lo12:.LC2
sub x19, x19, x0
mov w0, 1
mov x3, x19
bl __printf_chk
adrp x1, .LC3
mov w0, 1
sdiv x2, x20, x19
add x1, x1, :lo12:.LC3
bl __printf_chk
adrp x0, :got:__stack_chk_guard
ldr x0, [x0, #:got_lo12:__stack_chk_guard]
ldr x1, [sp, 232]
ldr x2, [x0]
subs x1, x1, x2
mov x2, 0
bne .L22
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 240
.cfi_remember_state
.cfi_restore 30
.cfi_restore 29
.cfi_restore 27
.cfi_restore 28
.cfi_restore 25
.cfi_restore 26
.cfi_restore 23
.cfi_restore 24
.cfi_restore 21
.cfi_restore 22
.cfi_restore 19
.cfi_restore 20
.cfi_def_cfa_offset 0
ret
.L14:
.cfi_restore_state
b .L14
.L22:
bl __stack_chk_fail
.cfi_endproc
.LFE50:
.size Proc0, .-Proc0
.section .rodata.str1.8
.align 3
.LC1:
.string "DHRYSTONE PROGRAM, 2'ND STRING"
.text
.align 2
.p2align 3,,7
.global Proc2
.type Proc2, %function
Proc2:
.LFB52:
.cfi_startproc
adrp x1, :got:Char1Glob
ldr x1, [x1, #:got_lo12:Char1Glob]
ldrb w1, [x1]
cmp w1, 65
bne .L24
adrp x2, :got:IntGlob
ldr w1, [x0]
ldr x2, [x2, #:got_lo12:IntGlob]
add w1, w1, 9
ldr w2, [x2]
sub w1, w1, w2
str w1, [x0]
.L24:
mov w0, 0
ret
.cfi_endproc
.LFE52:
.size Proc2, .-Proc2
.align 2
.p2align 3,,7
.global Proc3
.type Proc3, %function
Proc3:
.LFB53:
.cfi_startproc
adrp x1, :got:PtrGlb
ldr x1, [x1, #:got_lo12:PtrGlb]
ldr x2, [x1]
cbz x2, .L26
adrp x3, :got:IntGlob
ldr x2, [x2]
str x2, [x0]
ldr x0, [x3, #:got_lo12:IntGlob]
ldr x2, [x1]
ldr w1, [x0]
mov w0, 0
add w1, w1, 12
str w1, [x2, 16]
ret
.p2align 2,,3
.L26:
adrp x0, :got:IntGlob
mov w3, 100
mov w1, 112
str w1, [x2, 16]
ldr x0, [x0, #:got_lo12:IntGlob]
str w3, [x0]
mov w0, 0
ret
.cfi_endproc
.LFE53:
.size Proc3, .-Proc3
.align 2
.p2align 3,,7
.global Proc4
.type Proc4, %function
Proc4:
.LFB54:
.cfi_startproc
adrp x1, :got:Char2Glob
mov w2, 66
mov w0, 0
ldr x1, [x1, #:got_lo12:Char2Glob]
strb w2, [x1]
ret
.cfi_endproc
.LFE54:
.size Proc4, .-Proc4
.align 2
.p2align 3,,7
.global Proc5
.type Proc5, %function
Proc5:
.LFB55:
.cfi_startproc
adrp x2, :got:Char1Glob
adrp x1, :got:BoolGlob
mov w3, 65
mov w0, 0
ldr x2, [x2, #:got_lo12:Char1Glob]
ldr x1, [x1, #:got_lo12:BoolGlob]
strb w3, [x2]
str wzr, [x1]
ret
.cfi_endproc
.LFE55:
.size Proc5, .-Proc5
.align 2
.p2align 3,,7
.global Proc6
.type Proc6, %function
Proc6:
.LFB56:
.cfi_startproc
cmp w0, 2
beq .L31
mov w2, 3
str w2, [x1]
cmp w0, 1
beq .L32
bls .L36
cmp w0, 4
bne .L35
mov w0, 2
str w0, [x1]
.L35:
mov w0, 0
ret
.p2align 2,,3
.L32:
adrp x0, :got:IntGlob
ldr x0, [x0, #:got_lo12:IntGlob]
ldr w0, [x0]
cmp w0, 100
ble .L35
.L36:
mov w0, 0
str wzr, [x1]
ret
.p2align 2,,3
.L31:
mov w0, 1
str w0, [x1]
mov w0, 0
ret
.cfi_endproc
.LFE56:
.size Proc6, .-Proc6
.align 2
.p2align 3,,7
.global Proc7
.type Proc7, %function
Proc7:
.LFB57:
.cfi_startproc
add w0, w0, 2
add w1, w0, w1
mov w0, 0
str w1, [x2]
ret
.cfi_endproc
.LFE57:
.size Proc7, .-Proc7
.align 2
.p2align 3,,7
.global Proc8
.type Proc8, %function
Proc8:
.LFB58:
.cfi_startproc
add w4, w2, 5
mov w6, 204
dup v0.2s, w3
mov x5, x0
sbfiz x7, x4, 2, 32
sbfiz x2, x2, 2, 32
smull x0, w4, w6
add x8, x5, x7
adrp x6, :got:IntGlob
add x3, x2, x0
str d0, [x5, x7]
add x3, x1, x3
str w4, [x8, 120]
add x1, x1, x2
mov w7, 5
ldr x2, [x6, #:got_lo12:IntGlob]
add x1, x1, x0
ldr w6, [x3, 16]
mov w0, 0
str w4, [x3, 24]
add w6, w6, 1
stp w6, w4, [x3, 16]
ldr w3, [x5, w4, sxtw 2]
str w7, [x2]
str w3, [x1, 4100]
ret
.cfi_endproc
.LFE58:
.size Proc8, .-Proc8
.align 2
.p2align 3,,7
.global Func1
.type Func1, %function
Func1:
.LFB59:
.cfi_startproc
and w1, w1, 255
cmp w1, w0, uxtb
cset w0, eq
ret
.cfi_endproc
.LFE59:
.size Func1, .-Func1
.align 2
.p2align 3,,7
.global Func2
.type Func2, %function
Func2:
.LFB60:
.cfi_startproc
ldrb w3, [x0, 1]
ldrb w2, [x1, 2]
cmp w3, w2
beq .L42
stp x29, x30, [sp, -16]!
.cfi_def_cfa_offset 16
.cfi_offset 29, -16
.cfi_offset 30, -8
mov x29, sp
bl strcmp
cmp w0, 0
cset w0, gt
ldp x29, x30, [sp], 16
.cfi_restore 30
.cfi_restore 29
.cfi_def_cfa_offset 0
ret
.L42:
b .L42
.cfi_endproc
.LFE60:
.size Func2, .-Func2
.align 2
.p2align 3,,7
.global Func3
.type Func3, %function
Func3:
.LFB61:
.cfi_startproc
cmp w0, 2
cset w0, eq
ret
.cfi_endproc
.LFE61:
.size Func3, .-Func3
.section .[Link],"ax",@progbits
.align 2
.p2align 3,,7
.global main
.type main, %function
main:
.LFB62:
.cfi_startproc
stp x29, x30, [sp, -16]!
.cfi_def_cfa_offset 16
.cfi_offset 29, -16
.cfi_offset 30, -8
mov x29, sp
bl Proc0
mov w0, 0
bl exit
.cfi_endproc
.LFE62:
.size main, .-main
.comm PtrGlbNext,8,8
.comm PtrGlb,8,8
.comm Array2Glob,10404,8
.comm Array1Glob,204,8
.comm Char2Glob,1,1
.comm Char1Glob,1,1
.comm BoolGlob,4,4
.comm IntGlob,4,4
.section .rodata.cst8,"aM",@progbits,8
.align 3
.LC4:
.word 0
.word 2
.ident "GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
.section .[Link]-stack,"",@progbits

You might also like