gpt4 book ai didi

C Linux 从内存中读取/写入字(段、偏移量)

转载 作者:可可西里 更新时间:2023-11-01 11:50:46 29 4
gpt4 key购买 nike

我正在为硬件分配编写 Linux Bootstrap ,我知道我需要创建一个函数来从/向内存读取/写入单词。我无法确定我是否在正确的轨道上,任何帮助都会很棒。我会测试这些功能,但目前这对我来说是不可能的,因为我需要先构建核心功能,然后才能将所有内容放在一起。我得到了 get_byte(segment,offset)/put_byte(char,segment,offset),我的老师用汇编编码并导出到 C,验证它们可以工作。

unsigned short get_word(unsigned short segment, unsigned short offset)
{
unsigned short word, low, hi;
low = get_byte(segment, offset);
high = get_byte(segment, offset+1);
word = low+hi;
return word;
}

不知道上面说的对不对。我知道 hi 和 low 需要结合起来,可以添加还是我应该简单地做 low & hi 然后返回那个结果?如果我完全偏离基地,请告诉我。 offset 是 unsigned short 是正确的还是应该是 int?

int put_word(unsigned short word, unsigned short segment, unsigned short offset)
{
unsigned short low, hi;
low = word | offset;
hi = word | offset+1
put_byte(segment, low);
put_byte(segment, hi);
return 0;
}

我不知道上面的代码是否接近正确,但这是我最好的猜测。

有人知道解决方案或有任何提示吗?这些功能应该是非常基本的,但我被卡住了,需要继续我作业的实际部分。

更新 (12:46):修复了 put_byte(),如下所述,仅接受两个参数是没有意义的,已修复。我为我的错误道歉。

最佳答案

get_word() 中:

word = (high << 8) | low

put_word() 中:

low = word & 0xff;
hi = word >> 8;
put_byte(low, segment, offset);
put_byte(hi, segment, offset+1;

我怀疑 put_byte 是否像您所说的那样只接受两个参数。这没有意义。

关于C Linux 从内存中读取/写入字(段、偏移量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4809762/

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