文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
4. 数组
数组操作本质上是对地址的计算。
注意地址计算和指针运算的差别。地址以字节为单位,指针以元素长度为单位。
global _start section .bss %assign num 10 ; 元素数量 %assign size 8 ; 元素长度 array resb num * size ; 总长度 section .text _start: mov rcx, num ; array.len mov rax, array ; p = array[0] .loop: mov [rax], rcx ; *p = rcx add rax, size ; p++ 按元素长度 loop .loop exit: mov rax, 60 xor rdi, rdi syscall
(gdb) b exit (gdb) r (gdb) x/10xg &array 0x402000: 0x000000000000000a 0x0000000000000009 0x402010: 0x0000000000000008 0x0000000000000007 0x402020: 0x0000000000000006 0x0000000000000005 0x402030: 0x0000000000000004 0x0000000000000003 0x402040: 0x0000000000000002 0x0000000000000001
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论