.text
entry: b start
arr: .byte 10, 20, 30
eoa:
.align
start: ldr r0, =eoa
ldr r1, =arr
mov r3, #0
loop: ldrb r2, [r1], #1
add r3, r3, r2
cmp r0, r1
bne loop
stop: b stop
Disassembly of section .text:
00000000 <entry>:
0: ea000000 b 8 <start>
00000004 <arr>:
4: 140a .short 0x140a
6: 1e .byte 0x1e
00000007 <eoa>:
...
00000008 <start>:
8: e59f0018 ldr r0, [pc, #24] ; 28 <stop+0x4>
c: e59f1018 ldr r1, [pc, #24] ; 2c <stop+0x8>
10: e3a03000 mov r3, #0
00000014 <loop>:
14: e4d12001 ldrb r2, [r1], #1
18: e0833002 add r3, r3, r2
1c: e1500001 cmp r0, r1
20: 1afffffb bne 14 <loop>
00000024 <stop>:
24: eafffffe b 24 <stop>
28: 00000007 .word 0x00000007
2c: 00000004 .word 0x00000004
с опытом вы можете получить приблизительное представление о размере, но просто собрать и разобрать. оптимальная инструкция, другие ее либо не поддерживают, либо могут не оптимизировать. Таким образом, вы не можете просто сказать, что это будет три слова для реализации этих двух инструкций на ассемблере.
Вы могли бы сделать это без псевдо-инструкции
.text
entry: b start
arr: .byte 10, 20, 30
eoa:
.align
start: ldr r0, eoa_add
ldr r1, arr_add
mov r3, #0
loop: ldrb r2, [r1], #1
add r3, r3, r2
cmp r0, r1
bne loop
stop: b stop
eoa_add: .word eoa
arr_add: .word arr
Disassembly of section .text:
00000000 <entry>:
0: ea000000 b 8 <start>
00000004 <arr>:
4: 140a .short 0x140a
6: 1e .byte 0x1e
00000007 <eoa>:
...
00000008 <start>:
8: e59f0018 ldr r0, [pc, #24] ; 28 <eoa_add>
c: e59f1018 ldr r1, [pc, #24] ; 2c <arr_add>
10: e3a03000 mov r3, #0
00000014 <loop>:
14: e4d12001 ldrb r2, [r1], #1
18: e0833002 add r3, r3, r2
1c: e1500001 cmp r0, r1
20: 1afffffb bne 14 <loop>
00000024 <stop>:
24: eafffffe b 24 <stop>
00000028 <eoa_add>:
28: 00000007 .word 0x00000007
0000002c <arr_add>:
2c: 00000004 .word 0x00000004
и имели более близкая оценка.