如何在程序集中创建具有动态指定文件路径的文件?

问题描述 投票:2回答:1

此问题主要是在没有db或类似的任何帮助程序的情况下,如何在汇编中处理任意长字符串的路径名。我已经看到了几个示例,例如this,它显示:

section .text
   global _start         ;must be declared for using gcc

_start:                  ;tell linker entry point
   ;create the file
   mov  eax, 8
   mov  ebx, file_name
   mov  ecx, 0777        ;read, write and execute by all
   int  0x80             ;call kernel

   section  .data
file_name db 'myfile.txt'

但是,我特别想了解如何动态地执行此操作。我想(1)从汇编的角度更好地理解文件名的要求(是否需要空终止符等),更重要的是(2)使用db指定文件名without ]或任何汇编程序助手。例如,您可以通过命令行指定文件名,目标文件将不知道其结构。

您如何做到这一点?

linux assembly x86 system-calls
1个回答
0
投票

只需以某种方式在内存中构建字符串(使用空终止符,如注释中所指出),然后将指针传递给它以代替file_name。要使用命令行参数,它已经为您构建,因此只需指向它即可,如下所示:mov ebx, [esp + 8](作为参考,它等效于argv[1])。

© www.soinside.com 2019 - 2024. All rights reserved.