⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 libxr16.c

📁 This free cpu-ip! use verilog
💻 C
字号:
/*
 * libxr16.c -- minimal xr16 runtime library
 *
 * Copyright (C) 1999, 2000, Gray Research LLC.  All rights reserved.
 * The contents of this file are subject to the XSOC License Agreement;
 * you may not use this file except in compliance with this Agreement.
 * See the LICENSE file.
 */

typedef unsigned Word;

extern int main();
extern Word	_end;

void _zeromem();
Word* _tos();

/* Processor reset: zero memory and call main.
 */
int _reset() {
	_zeromem();

	main();

	/* dynamic halt */
	for (;;)
		;
}

/* Reset memory to consistent known state.
 */
void _zeromem() {
	Word* p = &_end;
	Word* end = _tos();

	for ( ; p < end; ++p)
		*p = 0;
}

/* Interrupts have not been tested.
 */
int _interrupt() {
	return 0;
}

/* Too clever way to return address of approximately the top of stack;
 * ignore compiler warning on returning address of argument.
 */
Word* _tos(Word arg) {
	return &arg;
}

/* Multiply unsigned times unsigned.
 */
unsigned mulu2(unsigned a, unsigned b) {
	unsigned w = 0;

	for ( ; a; a >>= 1) {
		if (a&1) w += b;
		b <<= 1;
	}
	return w;
}

/* This must be the last symbol in the last module "linked" into the load
 * image.
 */
Word _end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -