Інсталювати Steam
увійти
|
мова
简体中文 (спрощена китайська)
繁體中文 (традиційна китайська)
日本語 (японська)
한국어 (корейська)
ไทย (тайська)
Български (болгарська)
Čeština (чеська)
Dansk (данська)
Deutsch (німецька)
English (англійська)
Español - España (іспанська — Іспанія)
Español - Latinoamérica (іспанська — Латинська Америка)
Ελληνικά (грецька)
Français (французька)
Italiano (італійська)
Bahasa Indonesia (індонезійська)
Magyar (угорська)
Nederlands (нідерландська)
Norsk (норвезька)
Polski (польська)
Português (португальська — Португалія)
Português - Brasil (португальська — Бразилія)
Română (румунська)
Русский (російська)
Suomi (фінська)
Svenska (шведська)
Türkçe (турецька)
Tiếng Việt (в’єтнамська)
Повідомити про проблему з перекладом
⣿⣧⠄⠁⠄⠔⠒⠭⠭⠥⠥⠓⠄⢀⣴⣿⣿⡄⠁⠠⣤⠉⠉⣭⠝⠈⢐⣽⣕
⣿⣷⡢⢄⡰⡢⡙⠄⠠⠛⠁⢀⢔⣵⣿⣿⣿⣿⣧⣄⡈⠁⠈⠁⠉⡹⣽⣿⣷
⣿⣿⣿⣿⣿⣬⣭⡭⠔⣠⣪⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣵⡒⠫⠿⣿⣿⣿
⣿⣿⣿⣿⠿⣛⣥⣶⣿⠟⢁⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡙⣿⣿⣶⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⡫⠁⢀⠑⠓⠫⢝⢟⣿⣿⣿⣿⡻⠊⢉⣄⠈⠪⡫⢿⣿⣿
⣿⣿⣿⣿⣿⣿⢟⠁⣰⣿⣿⣢⢤⣀⡀⠈⠉⠉⢀⠠⠪⢝⡻⣷⡀⠊⡪⡻⣿
⡫⢟⣿⣿⣿⣿⡊⢠⣿⣿⡫⠚⣊⣡⠶⢦⣤⣤⠶⠞⡛⠳⣌⠫⡻⡀⠈⡺⢿
⠪⡪⡫⢟⡿⣕⠁⡫⠝⠊⡴⠋⠁⠁⠐⠁⠂⠈⠐⠈⠈⠐⠐⠳⠄⠹⣇⠪⡻
⠄⠁⠊⠕⡪⢕⢀⠞⠁⠄⣁⢀⢀⣀⣤⣤⣠⣀⣤⣴⣶⣶⣶⡆⠄⠆⢷⠕⡪
⣄⠄⠁⠄⠁⠄⡎⠄⠁⢬⣮⣕⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⡫⡪⡵⠄⠁⠄⠈
⣿⣧⠄⠁⠄⠔⠒⠭⠭⠥⠥⠓⠄⢀⣴⣿⣿⡄⠁⠠⣤⠉⠉⣭⠝⠈⢐⣽⣕
⣿⣷⡢⢄⡰⡢⡙⠄⠠⠛⠁⢀⢔⣵⣿⣿⣿⣿⣧⣄⡈⠁⠈⠁⠉⡹⣽⣿⣷
⣿⣿⣿⣿⣿⣬⣭⡭⠔⣠⣪⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣵⡒⠫⠿⣿⣿⣿
⣿⣿⣿⣿⠿⣛⣥⣶⣿⠟⢁⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡙⣿⣿⣶⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⡫⠁⢀⠑⠓⠫⢝⢟⣿⣿⣿⣿⡻⠊⢉⣄⠈⠪⡫⢿⣿⣿
⣿⣿⣿⣿⣿⣿⢟⠁⣰⣿⣿⣢⢤⣀⡀⠈⠉⠉⢀⠠⠪⢝⡻⣷⡀⠊⡪⡻⣿
⡫⢟⣿⣿⣿⣿⡊⢠⣿⣿⡫⠚⣊⣡⠶⢦⣤⣤⠶⠞⡛⠳⣌⠫⡻⡀⠈⡺⢿
⠪⡪⡫⢟⡿⣕⠁⡫⠝⠊⡴⠋⠁⠁⠐⠁⠂⠈⠐⠈⠈⠐⠐⠳⠄⠹⣇⠪⡻
⠄⠁⠊⠕⡪⢕⢀⠞⠁⠄⣁⢀⢀⣀⣤⣤⣠⣀⣤⣴⣶⣶⣶⡆⠄⠆⢷⠕⡪
⣄⠄⠁⠄⠁⠄⡎⠄⠁⢬⣮⣕⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⡫⡪⡵⠄⠁⠄⠈
⣿⣧⠄⠁⠄⠔⠒⠭⠭⠥⠥⠓⠄⢀⣴⣿⣿⡄⠁⠠⣤⠉⠉⣭⠝⠈⢐⣽⣕
⣿⣷⡢⢄⡰⡢⡙⠄⠠⠛⠁⢀⢔⣵⣿⣿⣿⣿⣧⣄⡈⠁⠈⠁⠉⡹⣽⣿⣷
⣿⣿⣿⣿⣿⣬⣭⡭⠔⣠⣪⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣵⡒⠫⠿⣿⣿⣿
⣿⣿⣿⣿⠿⣛⣥⣶⣿⠟⢁⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡙⣿⣿⣶⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⡫⠁⢀⠑⠓⠫⢝⢟⣿⣿⣿⣿⡻⠊⢉⣄⠈⠪⡫⢿⣿⣿
⣿⣿⣿⣿⣿⣿⢟⠁⣰⣿⣿⣢⢤⣀⡀⠈⠉⠉⢀⠠⠪⢝⡻⣷⡀⠊⡪⡻⣿
⡫⢟⣿⣿⣿⣿⡊⢠⣿⣿⡫⠚⣊⣡⠶⢦⣤⣤⠶⠞⡛⠳⣌⠫⡻⡀⠈⡺⢿
⠪⡪⡫⢟⡿⣕⠁⡫⠝⠊⡴⠋⠁⠁⠐⠁⠂⠈⠐⠈⠈⠐⠐⠳⠄⠹⣇⠪⡻
⠄⠁⠊⠕⡪⢕⢀⠞⠁⠄⣁⢀⢀⣀⣤⣤⣠⣀⣤⣴⣶⣶⣶⡆⠄⠆⢷⠕⡪
⣄⠄⠁⠄⠁⠄⡎⠄⠁⢬⣮⣕⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⡫⡪⡵⠄⠁⠄⠈
#include "list.hpp"
class _thread;
class Scheduler {
private:
static List<_thread> readyCoroutineQueue;
public:
static _thread *get();
static void put(_thread *ccb);
};
uint64 volatile a3;
__asm__ volatile ("ld %0, 13*8(fp)" : "=r"(a3));
return a3;
}
inline void Riscv::w_a4(uint64 a4) {
__asm__ volatile ("mv a4, %0" : : "r"(a4));
}
inline uint64 Riscv::r_a4() {
uint64 volatile a4;
__asm__ volatile ("ld %0, 14*8(fp)" : "=r"(a4));
return a4;
}
inline void Riscv::w_a0_stack(uint64 a0) {
__asm__ volatile ("sd %0, 10*8(fp)" : : "r"(a0));
}
long volatile a0;
__asm__ volatile ("ld %0, 10*8(fp)" : "=r"(a0));
return a0;
}
inline void Riscv::w_a1(uint64 a1) {
__asm__ volatile ("mv a1, %0" : : "r"(a1));
}
inline uint64 Riscv::r_a1() {
uint64 volatile a1;
__asm__ volatile ("ld %0, 11*8(fp)" : "=r"(a1));
return a1;
}
inline void Riscv::w_a2(uint64 a2) {
__asm__ volatile ("mv a2, %0" : : "r"(a2));
}
inline uint64 Riscv::r_a2() {
uint64 volatile a2;
__asm__ volatile ("ld %0, 12*8(fp)" : "=r"(a2));
return a2;
}
inline void Riscv::w_a3(uint64 a3) {
__asm__ volatile ("mv a3, %0" : : "r"(a3));
}