assembly - 如何在 nasm 中声明用户指定大小的数组?
问题描述
想用 nasm 做一个使用 x86 架构的例子,它可以创建一个大小为“n”的数组,其中“n”将是用户希望在运行时拥有数组大小的数字
extern _printf
extern _scanf
extern _scanf
global _main
section .data
array: 10,5,4
msg: db "enter the size of the array: ",10,0
size: db 10
format: db "%i",0
section .text
_main:
push msg
call _printf
add esp, 4
push size
push format
call _scanf
add esp, 8
ret
解决方案
您的意思是像resd n
在 BSS 中一样,用户可以构建程序nasm -felf -Dn=1024
以将 NASM 宏设置为常量?您可以使用%ifdef
.
如果你想要一个运行时可变的数组大小,它显然不能在静态存储中(除非你大量过度分配并且只使用需要的数组的任何部分。这在为 BSS 进行延迟分配的系统上很好。)
推荐阅读
- c# - 在 JsonConverter.ReadJson 中读取原始输入
- java - 如何在 Spring Integration DSL 中为通道设置多个消息处理程序?
- arduino - 在使用 SD 卡读取文件时需要帮助
- xml - 如何使用python根据subelem文件删除xml中的元素?
- ios - 如何将数据从集合视图单元传递到新的视图控制器(以编程方式且没有情节提要)?
- css - 如何在保持线条居中的同时对齐线条上方和下方的文本?
- javascript - 如何将带有表单控件的表单组动态添加到表单组
- css - 使用 CSS 显示姓名首字母
- redis-sentinel - 谁重写了slave redis实例的redis配置slaveof?
- java - Firebase 用户 == 一直为空