Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly x86汇编/C:如何将数据存储到内存部分以供进一步使用_Assembly_Memory_Memory Management_X86_Att - Fatal编程技术网

Assembly x86汇编/C:如何将数据存储到内存部分以供进一步使用

Assembly x86汇编/C:如何将数据存储到内存部分以供进一步使用,assembly,memory,memory-management,x86,att,Assembly,Memory,Memory Management,X86,Att,我正在编写一个x86汇编程序(AT&T语法),它动态分配一个数组,后者填充该数组,并返回指向该数组的指针。最初,我将指向数组内存地址的指针存储在数据部分中定义的标签中。然而,我的老师要求我不能在我的程序中使用数据部分。我已经在使用所有的寄存器,并且堆栈中有太多的push/pop调用,因此在寄存器中跟踪该指针将非常不方便。有没有办法存储数据而不将其放入寄存器或标签中 我正在考虑将指针(调用malloc后存储在EAX寄存器中)存储到一个特定的内存单元中(在本例中,是EBP寄存器下方的40字节),使用

我正在编写一个x86汇编程序(AT&T语法),它动态分配一个数组,后者填充该数组,并返回指向该数组的指针。最初,我将指向数组内存地址的指针存储在数据部分中定义的标签中。然而,我的老师要求我不能在我的程序中使用数据部分。我已经在使用所有的寄存器,并且堆栈中有太多的push/pop调用,因此在寄存器中跟踪该指针将非常不方便。有没有办法存储数据而不将其放入寄存器或标签中

我正在考虑将指针(调用
malloc
后存储在
EAX
寄存器中)存储到一个特定的内存单元中(在本例中,是
EBP
寄存器下方的40字节),使用基址堆栈指针作为参考。但是,
MatrixAddress(%ebp)
的值似乎是负值,并且在以后访问该部分内存时出现了分段错误

.equ matrixCAddress, -40

push %esi
movl matrixCAddress(%ebp), %esi
movl %eax, (%esi)
pop %esi

您的代码没有执行您描述的操作。无论如何,堆栈上的局部变量是一件事,但是如果您希望使用它,您需要分配它们并将
ebp
设置为帧指针。假设您已经分配了至少40个字节,并且设置了
ebp
,您只需执行
mov%eax,matrixcdAddress(%ebp)