- 1
- 2
- 3
- 4
- 5
- 6
- 7
if constexpr (BusMode::BLOCKING == mode) {
derived()->send_block(arr, num);
} else if (BusMode::IT == mode){
derived()->send_it(arr, num);
} else if (BusMode::DMA == mode){
derived()->send_dma(arr, num);
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
if constexpr (BusMode::BLOCKING == mode) {
derived()->send_block(arr, num);
} else if (BusMode::IT == mode){
derived()->send_it(arr, num);
} else if (BusMode::DMA == mode){
derived()->send_dma(arr, num);
}
https://habr.com/ru/post/556144/
> Отладочный вывод на микроконтроллерах: как Concepts и Ranges отправили мой printf на покой
Стреляем себе в ногу при помощи if constexpr.
+1
std::ranges::for_each(tasks, [](auto x) {x();});
а ещё теперь не нужно писать std::begin(), std::end().
c++ будущего.
+1
func getTransport(tt string) (iTransport, error) {
if tt == "scooter" {
return newElectricScooter(), nil
}
if tt == "quadcopter" {
return newQuadcopter(), nil
}
return nil, fmt.Errorf("Wrong type")
}
https://habr.com/ru/post/556512/
> Factory Method Pattern
> Привет, друзья. С вами Alex Versus.
> Ранее мы говорили про шаблоны проектирования Одиночка и Стратегия, про тонкости реализации на языке Golang.
> Сегодня расскажу про Фабричный метод.
0
#include <stdio.h>
int main() {
/*
puts("Хрюкни");
//*/
return 0;
}
Если нужно раскомментировать код, добавляем //
#include <stdio.h>
int main() {
///*
puts("Хрюкни");
//*/
return 0;
}
0
for (auto& key : interruptController.hardwareInterrupts | std::views::keys)
{
memory[key * 2 ] = 0xFF;
memory[key * 2 + 1] = 0xFF;
}
охуенно.
0
#define MAKE(a1, a2, m1, m2) if(arg1s == a1 && arg2s == a2)\
sprintf_s(opcode_buffer, format.c_str(), opcodeToString((Opcode)opcode.opcode).c_str(), m1, m2)
MAKE(I, I, iarg1 , iarg2 );
MAKE(S, I, arg1.c_str(), iarg2 );
MAKE(I, S, iarg1 , arg2.c_str());
MAKE(S, S, arg1.c_str(), arg2.c_str());
#undef MAKE
да что вы знаете о форматировании.
0
// https://github.com/sergev/bkunix/blob/master/src/bin/pwd.c
void
cat(name)
char *name;
{
register int i, j;
i = -1;
while (name[++i] != 0);
if ((off+i+2) > 511) {
write(2, "pwd: too long path\n", 19);
exit(1);
}
for (j=off+1; j>=0; --j)
path[j+i+1] = path[j];
off=i+off+1;
path[i] = '/';
for (--i; i>=0; --i)
path[i] = name[i];
}
char * ckroot(dev, ino)
int dev, ino;
{
DIR * dir;
struct stat st;
register struct dirent * d;
chdir("/");
dir = opendir("/");
do {
d = readdir(dir);
if (! d) {
return "[mount point]";
}
stat(d->d_name, &st);
} while (st.st_dev != dev || st.st_ino != ino);
closedir(dir);
return d->d_name;
}
int
main()
{
int rdev, rino;
DIR *dir;
struct stat dot, dotdot;
register struct dirent *d;
stat("/", &dot);
rdev = dot.st_dev;
rino = dot.st_ino;
/*printf ("/ dev=%d ino=%d\n", rdev, (int) rino);*/
for (;;) {
stat(".", &dot);
/*printf (". dev=%d ino=%d\n", (int) dot.st_dev, (int) dot.st_ino);*/
if (dot.st_ino == rino && dot.st_dev == rdev)
break;
dir = opendir("..");
if (! dir) {
write(2, "pwd: cannot open ..\n", 20);
return 1;
}
stat("..", &dotdot);
/*printf (".. dev=%d ino=%d\n", (int) dotdot.st_dev, (int) dotdot.st_ino);*/
chdir("..");
if (dot.st_dev == dotdot.st_dev) {
if (dot.st_ino == dotdot.st_ino) {
cat(ckroot(dot.st_dev, dot.st_ino));
break;
}
do {
d = readdir(dir);
if (! d) {
write(2, "read error in ..\n", 17);
return 1;
}
} while (d->d_ino != dot.st_ino);
} else {
do {
d = readdir(dir);
if (! d) {
write(2, "read error in ..\n", 17);
return 1;
}
stat(d->d_name, &dotdot);
/*printf ("%.14s dev=%d ino=%d\n", d->d_name, (int) dotdot.st_dev, (int) dotdot.st_ino);*/
} while (dotdot.st_ino != dot.st_ino ||
dotdot.st_dev != dot.st_dev);
}
closedir(dir);
cat(d->d_name);
/*path[off] = 0; printf ("pwd %s\n", path);*/
}
write(1, "/", 1);
if (off < 0)
off = 0;
path[off] = '\n';
write(1, path, off + 1);
return 0;
}
какой pwd )))
0
С Днём Победы!
rJlaBHblu_nemyx
0
IT Оффтоп #86
#56: https://govnokod.ru/26862 https://govnokod.xyz/_26862
#57: https://govnokod.ru/26890 https://govnokod.xyz/_26890
#58: https://govnokod.ru/26916 https://govnokod.xyz/_26916
#59: https://govnokod.ru/26934 https://govnokod.xyz/_26934
#60: https://govnokod.ru/26949 https://govnokod.xyz/_26949
#61: https://govnokod.ru/26980 https://govnokod.xyz/_26980
#62: https://govnokod.ru/26999 https://govnokod.xyz/_26999
#63: https://govnokod.ru/27004 https://govnokod.xyz/_27004
#64: https://govnokod.ru/27020 https://govnokod.xyz/_27020
#65: https://govnokod.ru/27027 https://govnokod.xyz/_27027
#66: https://govnokod.ru/27040 https://govnokod.xyz/_27040
#67: https://govnokod.ru/27049 https://govnokod.xyz/_27049
#68: https://govnokod.ru/27061 https://govnokod.xyz/_27061
#69: https://govnokod.ru/27071 https://govnokod.xyz/_27071
#70: https://govnokod.ru/27097 https://govnokod.xyz/_27097
#71: https://govnokod.ru/27115 https://govnokod.xyz/_27115
#72: https://govnokod.ru/27120 https://govnokod.xyz/_27120
#73: https://govnokod.ru/27136 https://govnokod.xyz/_27136
#74: https://govnokod.ru/27160 https://govnokod.xyz/_27160
#75: https://govnokod.ru/27166 https://govnokod.xyz/_27166
#76: https://govnokod.ru/27168 https://govnokod.xyz/_27168
#77: https://govnokod.ru/27186 https://govnokod.xyz/_27186
#78: https://govnokod.ru/27219 https://govnokod.xyz/_27219
#79: https://govnokod.ru/27254 https://govnokod.xyz/_27254
#80: https://govnokod.ru/27270 https://govnokod.xyz/_27270
#81: https://govnokod.ru/27280 https://govnokod.xyz/_27280
#82: https://govnokod.ru/27284 https://govnokod.xyz/_27284
#83: https://govnokod.ru/27296 https://govnokod.xyz/_27296
#84: https://govnokod.ru/27336 https://govnokod.xyz/_27336
#85: https://govnokod.ru/27381 https://govnokod.xyz/_27381
+1
INTERRUPT_TABLE section:
00> FF FF | . .
02> 9F 00 | . .
DATA section:
32> 48 65 6C 6C 6F 20 77 6F | Hello.wo
3A> 72 6C 64 21 00 00 00 00 | rld . . . . .
42> 00 00 00 00 00 00 00 00 | . . . . . . . .
4A> 00 00 00 00 00 00 00 00 | . . . . . . . .
_START section:
8F> 9B 00 32 00 PUSH 32
93> 18 00 00 00 INT 0
97> 18 00 01 00 INT 1
9B> 94 40 01 00 ADD %B 1
EXIT interrupt:
9F> 81 40 16 E8 MOV %B E816
A3> 20 00 00 00 RET
RUNFLOW:
8F> 9B 00 32 00 PUSH 32
93> 18 00 00 00 INT 0 DEBUG OUTPUT: Hello world!
97> 18 00 01 00 INT 1
9F> 81 40 16 E8 MOV %B E816
A3> 20 00 00 00 RET
9B> 94 40 01 00 ADD %B 1
HALT SEQUENCE REACHED: 0xE817
Закодил свою виртуальную машину и ассемблер под неё.
Заспидранил Hello world за неделю.
https://pastebin.com/NmLEuGMU