给定这个 C 代码:
char** names=(char**)malloc(count*sizeof(char*));
我想将它转换为 NASM 汇编代码。这是我尝试过的,但代码崩溃了:
mov eax, dword count
mov ebx, [eax*4] ;; i did times 4 because we clear stack by 4 bits or bytes?
push ebx
call _malloc
mov names, eax
add esp, 4
sizeof(char*)
是什么意思?代码寻址哪个字符指针?
最佳答案
它崩溃的原因是因为 mov ebx, [eax*4]
正在访问地址 eax * 4
的内存,这不太可能是有效的,而且绝对不是什么无论如何你想要。要乘以 4,您可以使用 lea ebx, [eax*4]
或 shl eax, 2
然后使用 push eax
。
PS:学习使用调试器。
关于c - 如何使用 malloc 在 NASM 程序集中创建一个新的字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34098278/