代码拉取完成,页面将自动刷新
#include "mmu.h"
#include <stdlib.h>
#include <string.h>
char *V2P(int addr) {
int i;
char *src = NULL;
for (i = 0; i < segment_cnt; i++) {
if (segments[i].offset <= addr && segments[i].offset + segments[i].size >= addr - 4) {
src = segments[i].content + addr - segments[i].offset;
break;
}
}
return src;
}
void fetch_nbyte(int addr, void *dest, int len)
{
memcpy(dest, V2P(addr), len);
}
void fetch_dword(int addr, void *dest)
{
fetch_nbyte(addr, dest, 4);
}
void write_word(int addr, int word)
{
memcpy(V2P(addr), &word, 4);
}
void write_byte(int addr, char byte)
{
memcpy(V2P(addr), &byte, 1);
}
void write_hword(int addr, short hword)
{
memcpy(V2P(addr), &hword, 2);
}
int alloc_stack()
{
segment_t *ss = &segments[segment_cnt];
segment_cnt ++;
ss->offset = STACK_START;
ss->size = STACK_SIZE;
ss->content = malloc(STACK_SIZE);
return STACK_TOP;
}
int alloc_cs()
{
segment_t *cs = &segments[segment_cnt];
segment_cnt ++;
cs->offset = CS_START;
cs->size = CS_SIZE;
cs->content = malloc(CS_SIZE);
return CS_START;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。