gpt4 book ai didi

c - 使用绝对内存地址初始化指针

转载 作者:行者123 更新时间:2023-11-30 18:04:59 24 4
gpt4 key购买 nike

我正在我正在处理的自定义操作系统项目中实现 put(在屏幕上打印字符串)系统调用。字符串的绝对内存地址由代表 esi 寄存器的 unsigned int 变量给出,我需要初始化一个指向 unsigned char 的指针。/code> 从中读取字符串的数组。

寄存器内容表示为:

struct regs
{
unsigned int gs, fs, es, ds;
unsigned int edi, esi, ebp, esp, ebx, edx, ecx, eax;
unsigned int int_no, err_code;
unsigned int eip, cs, eflags, useresp, ss;
};

我尝试了以下方法来初始化指向esi中地址的指针:

void fault_handler(struct regs *r) {
void *p = (void*)r->esi;
unsigned char* s = (unsigned char*)p;
// take s and print it to the screen
}

但是我没有得到我应该得到的“Hello\n”,而是得到了垃圾。我验证了 esi 的地址确实指向正确的字符串。我遇到的问题是初始化指向该地址的指针。

谢谢!

更新:当原始答案得到回答时,我将关闭此问题并将讨论转移到新问题。谢谢大家!

最佳答案

您的代码正确地将 esi 分配给 p,然后分配给 s。因此我只能假设您的问题实际上与此步骤无关。

顺便说一句,我不明白为什么你需要 p,只需将 esi 直接分配给 s 即可。

关于c - 使用绝对内存地址初始化指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7130443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com