NASM:在编译时提供恒定值

时间:2016-11-30 18:01:08

标签: assembly command-line-interface nasm

说我有一些通用的x86 NASM代码:

%define Constant 123
mov si, Constant

问题是在编写程序集时尚不知道常量值Constant。我的意思是,在组装文件时应该提供常量的值。在我的情况下,我需要的常量取决于文本文件的大小。

如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

在查看NASM手册后,我发现没有执行我所需要的汇编程序的命令行选项。我的解决方案非常简单。以下脚本显示了我如何解决问题。

#!/bin/sh

# Could be replaced by any other way of getting the constant value; this gets a file's size
fileSize=`stat --printf="%s" my_file.txt`

# Write the constant definition to a temporary file
printf "%%define FILE_SIZE %s\n" $fileSize > tmp

# Append the rest to the temporary file 
cat my_asm.asm >> tmp

# Assemble the file and name the output correctly
nasm tmp -o my_asm.out

# Remove the temporary file
rm tmp