c - 如何使用 NASM 修改某些 C 指针指向的内存?
问题描述
我在 NASM 上编写了这段代码,在 c:int* ptr
和int val
. 目的是设置ptr
指向的内存val
然后返回ptr
。
section .text
global _mptr
_mptr:
mov ebx, [esp + 4]
mov ecx, [esp + 8]
mov [ebx], ecx
mov eax, [esp + 4]
ret
这是C代码:
#include <stdio.h>
extern int* _mptr(int* ptr, int val);
int main(void)
{
int i = 0;
int* ptr = &i;
ptr = _mptr(ptr, 225);
//I want to set i to 225 using _mptr.
printf("%d\n", i);
}
我以这种方式编译程序:
nasm -f elf asmCode.asm
gcc -Wall -m32 program.c asmCode.o
在 Ubuntu 操作系统上。
当我用./a.out
程序执行它时失败。
在汇编中访问某些 C 指针指向的内存的正确方法是什么?
解决方案
推荐阅读
- kotlin - Kotlin JPQL SELECT CASE ClassCastException
- c - 多线程环境中的信号处理程序行为
- javascript - 为什么 oclif-dev manifest 命令正在执行源代码?
- c# - 反转字符串哈希函数
- php - 通过不在 WordPress 帖子循环中工作来订购
- istio - 将现有 CA 插入 Istio 时的 CSR
- python - 为什么我的使用 OpenCV 裁剪多个图像并将它们保存到文件夹的代码不起作用?
- c++ - 类模板参数推导(CTAD)应该在模块内工作吗?
- docker - 如何阻止`gcloud component update`保留备份?
- c++ - 我对字符串连接使用了相同的方法,但第一个显示错误,第二个显示结果