gpt4 book ai didi

c++ - 这是一个有效的 C I/O 库吗?

转载 作者:行者123 更新时间:2023-11-30 21:23:53 25 4
gpt4 key购买 nike

我有一个问题。我想创建一个简单的C I/O库,并且我想检查我使用的方法是否正确。该代码实际上是伪代码,因此请忽略语法。

Simple I/O Library:
Output is 0x0000
Input is 0xFFFF

void writeChar (char* po) {
char* ph = 0x0000
char po;
*ph = po
}

char readChar () {
char* pi = 0xFFFF
char in
in = *pi
return in
}

**更新:**抱歉,如果我不清楚。这是针对内存映射 I/O 系统的。这些值只是示例。我只是想测试一下这个想法是否有效。

还有一个问题:我想了解内存访问和端口访问之间的区别。假设这次是端口映射的 I/O 系统,那么访问端口而不是内存位置需要进行哪些更改(如果有)。

最佳答案

如果您的系统内存映射端口 I/O 寄存器,那么伪代码中的某些内容就可以正常工作。

真正的 C 代码看起来像这样:

void writeChar (uint8_t po) {
volatile uint8_t* ph = (volatile uint8_t*)0x0000;
*ph = po
}

uint8_t readChar (void) {
volatile uint8_t* pi = (volatile uint8_t*)0xFFFF
return *pi;
}

真实代码永远不会使用char类型,因为它具有实现定义的符号。也就是说,char 对于硬件相关的编程来说是无用的,因为它不可靠。不过,您可以使用unsigned char

此外,实际代码必须包含强制转换,因为您无法将整数分配给标准 C 中的指针。

I would like to understand the difference between memory access and port access. What, if any, changes would be required to access a port instead of a memory location, assuming a port-mapped I/O system this time.

对于内存映射寄存器来说,没有真正的区别。这都是由硬件决定的。您必须阅读有关特定寄存器的手册才能了解如何使用它。

关于c++ - 这是一个有效的 C I/O 库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40583569/

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