数组处理与浮点指令编程详解
1. 数组处理相关操作
1.1 数组打印
数组打印通过 print 函数实现,该函数与 fill 函数类似,由于调用了其他函数,需要在栈上保存 3 个值。代码与 fill 函数有相似之处,但区别在于它是将数组值加载到寄存器,而非将值存储到数组中。数据段用于在 printf 调用附近存储 printf 格式。以下是具体代码:
print ( array , size ) ;
print :
. array equ 0
. size equ 8
. i equ 16
push rbp
mov rbp , rsp
sub rsp , 32
mov [rsp+ . array] , rdi
mov [rsp+ . size] , rsi
xor eex , eex
mov [rsp+ . i] , rex
segment . data
. format :
db "%10d" , Ox0a , O
segment . text
. more
lea rdi , [ . format]
mov rdx , [rsp+ . array]
mov rex , [rsp+ . i]
mov esi , [rdx+rex*4]
mov [rsp+ . i] , rex
call printf
mov rex , [rsp+ . i]
inc rex
mov [rsp+ . i] , rex
cmp rex , [rsp+ . size]
jl .more
超级会员免费看
订阅专栏 解锁全文
9

被折叠的 条评论
为什么被折叠?



