- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
/* meta */
typedef struct r_anal_meta_item_t {
ut64 from;
ut64 to;
ut64 size;
int type;
int subtype;
char *str;
int space;
} RAnalMetaItem;
typedef struct {
struct r_anal_t *anal;
int type;
int rad;
SdbForeachCallback cb;
void *user;
int count;
struct r_anal_type_function_t *fcn;
} RAnalMetaUserItem;
typedef struct r_anal_range_t {
ut64 from;
ut64 to;
int bits;
} RAnalRange;
#define R_ANAL_UNMASK_TYPE(x) (x&R_ANAL_VAR_TYPE_SIZE_MASK)
#define R_ANAL_UNMASK_SIGN(x) (((x& R_ANAL_VAR_TYPE_SIGN_MASK)>> R_ANAL_VAR_TYPE_SIGN_SHIFT)==R_ANAL_VAR_TYPE_UNSIGNED)?0:1
#define R_ANAL_GET_OFFSET(x,y,z) \
(x && x->binb.bin && x->binb.get_offset)? \
x->binb.get_offset (x->binb.bin, y, z): -1
enum {
R_ANAL_DATA_TYPE_NULL = 0,
R_ANAL_DATA_TYPE_UNKNOWN = 1,
R_ANAL_DATA_TYPE_STRING = 2,
R_ANAL_DATA_TYPE_WIDE_STRING = 3,
R_ANAL_DATA_TYPE_POINTER = 4,
R_ANAL_DATA_TYPE_NUMBER = 5,
R_ANAL_DATA_TYPE_INVALID = 6,
R_ANAL_DATA_TYPE_HEADER = 7,
R_ANAL_DATA_TYPE_SEQUENCE = 8,
R_ANAL_DATA_TYPE_PATTERN = 9,
};
// used from core/anal.c
#define R_ANAL_ADDR_TYPE_EXEC 1
#define R_ANAL_ADDR_TYPE_READ 1 << 1
#define R_ANAL_ADDR_TYPE_WRITE 1 << 2
#define R_ANAL_ADDR_TYPE_FLAG 1 << 3
#define R_ANAL_ADDR_TYPE_FUNC 1 << 4
#define R_ANAL_ADDR_TYPE_HEAP 1 << 5
#define R_ANAL_ADDR_TYPE_STACK 1 << 6
#define R_ANAL_ADDR_TYPE_REG 1 << 7
#define R_ANAL_ADDR_TYPE_PROGRAM 1 << 8
#define R_ANAL_ADDR_TYPE_LIBRARY 1 << 9
#define R_ANAL_ADDR_TYPE_ASCII 1 << 10
#define R_ANAL_ADDR_TYPE_SEQUENCE 1 << 11
#define R_ANAL_ARCHINFO_MIN_OP_SIZE 0
#define R_ANAL_ARCHINFO_MAX_OP_SIZE 1
#define R_ANAL_ARCHINFO_ALIGN 2
#define R_ANAL_ARCHINFO_DATA_ALIGN 4
Как нужно называть идентификаторы.
Источник:
https://github.com/radareorg/radare2/
TEH3OPHblu_nemyx 11.07.2020 13:17 # +1
https://github.com/radareorg/radare2/blob/master/libr/anal/anal.c
Метки: #radare2, #anal, #naming, #reverse-engineering, #forensics, #security, #binary-analysis, #malware-analysis, #disassembler.
bormand 11.07.2020 14:12 # 0
3.14159265 11.07.2020 16:29 # +1
drivers/tty/serial/sunsab.h
gost 11.07.2020 14:30 # 0
TEH3OPHblu_nemyx 11.07.2020 14:38 # 0
https://github.com/radareorg/radare2/tree/master/libr/anal/p
gost 11.07.2020 15:22 # +1
>>> You can find them in anal
TEH3OPHblu_nemyx 11.07.2020 15:53 # +1
3.14159265 11.07.2020 16:02 # 0
libr/anal/p/anal_arm.c
TEH3OPHblu_nemyx 11.07.2020 16:06 # +1
Анальная расчленёнка топором.
3.14159265 11.07.2020 16:09 # +1
3.14159265 11.07.2020 16:13 # +1
guest8 11.07.2020 18:35 # −999
gost 11.07.2020 18:39 # 0
>>> Prime powers p^e where p is a prime and e >= 3 (prime powers without 1, the primes, or the squares of primes).
>>> 8, 16, 27, 32, 64, 81, 125, 128, 243, 256, 343, 512, 625, ...
gostinho 11.07.2020 15:39 # 0
R_ANAL_ARCHINHO
3.14159265 11.07.2020 15:51 # 0
>struct r_anal_meta_item_t
Шутка про double penetration;
3.14159265 11.07.2020 16:15 # +1
Там очень много:
https://github.com/torvalds/linux/search?q=anal&unscoped_q=anal
TEH3OPHblu_nemyx 11.07.2020 16:24 # 0
https://github.com/torvalds/linux/blob/master/fs/jbd2/journal.c
https://github.com/torvalds/linux/blob/master/arch/sparc/kernel/fpu_traps.S
Похоже, что разработка ядра — нелёгкое дело.
TEH3OPHblu_nemyx 11.07.2020 16:31 # 0
3.14159265 11.07.2020 16:48 # +1
0 == 0 | 1
0 == 1 | 0
1 == 0 | 0
1 == 1 | 1
>инструкция трёхместная
RISC же
Небольшое число простых инструкций, обилие регистров, трехместные комманды, всё это отличало риски.
gost 11.07.2020 17:31 # +1
Я слышал, железячники вообще любят ко всем операциям букву «N» добавлять. «NAND», «NOR», «XNOR».
TEH3OPHblu_nemyx 11.07.2020 18:38 # +1
Была ещё ЭСЛ, в которой базовый элемент выдавал сразу два сигнала: ИЛИ (OR) и ИЛИ-НЕ (NOR). Схема была такая, что комплементарный результат можно было получить почти бесплатно.
3.14159265 11.07.2020 22:29 # +1
Так это 2 элемента, кобенируя которые можно собрать все остальные операции.
Минимально необходимый и достаточный базис. Такой же как двоичная система или тьюринг-полные вещи вроде brainfuck, movfuskator.
N* они любят поскольку подавая на оба входа один и тот же сигнал получаем инвертор.
С помощью инвертора из NAND получается AND, а из NOR=>OR.
А благодаря правилу Де-Моргана из ANDa делается OR и наоборот.
После чего лепится произвольная логика в КНФ/ДНФ.
gostinho 11.07.2020 22:42 # +1
MAKAKA 11.07.2020 23:12 # 0
bormand 11.07.2020 23:13 # +2
MAKAKA 11.07.2020 23:15 # 0
Шеффер же доказал. Тогда еще лучше
vistefan 11.07.2020 23:17 # 0
3.14159265 12.07.2020 01:04 # 0
bormand 12.07.2020 01:07 # +1
Ну или константу с неопределенным значением чтоб веселее было. Тоже должно прокатить.
vistefan 12.07.2020 01:08 # 0
bormand 12.07.2020 01:11 # +1
Ты можешь написать (x nand x) nand x чтобы получить единичку при любом х.
vistefan 12.07.2020 01:15 # 0
3.14159265 12.07.2020 01:22 # 0
1=nand(nand(x,x),x)
vistefan 12.07.2020 01:23 # 0
3.14159265 12.07.2020 01:26 # 0
(x nand x) = !x
(x nand x) nand x = !x nand x = not (x and !x)=not 0 =1
vistefan 12.07.2020 01:29 # 0
vistefan 12.07.2020 01:16 # 0
3.14159265 12.07.2020 01:18 # 0
true
false
vistefan 12.07.2020 01:22 # 0
bormand 12.07.2020 03:14 # 0
guest8 12.07.2020 03:18 # −999
bormand 12.07.2020 04:00 # 0
guest8 12.07.2020 04:06 # −999
jojaxon 12.07.2020 04:31 # 0
MediumGovno 01.08.2021 10:48 # 0
3.14159265 22.07.2020 13:27 # 0
https://pbs.twimg.com/media/EK1Y4kQUEAA2pOr?format=png&name=360x360
>Ну или константу с неопределенным значением чтоб веселее было.
Получается jeff dean — лалка. Настоящим пацанам на калькуляторе 1 и 0 не нужны.
TEH3OPHblu_nemyx 22.07.2020 13:31 # 0
А промежуточные результаты на листочке бумаги записывать? Если бы у этого калькулятора были хотя бы кнопки MS/MR...
3.14159265 22.07.2020 13:52 # 0
Лучше PUSH и POP.
TEH3OPHblu_nemyx 22.07.2020 14:06 # +2
https://ru.wikipedia.org/wiki/Электроника_МК-52
https://ru.wikipedia.org/wiki/Электроника_МК-61
https://ru.wikipedia.org/wiki/Электроника_Б3-34
Кружочек — это вращение (обычно нажималась после кнопки «F», потому что отдельной физической кнопки не было), две стрелочки или XY — это обмен двух ячеек стека.
Обмен двух верхних ячеек очень часто использовали перед операциями вычитания и деления, поскольку они некоммутативны, а аргументы из стека забирают в одном определённом порядке.
У моделей последнего поколения стековых калькуляторов была ещё операция «Bx» — восстановление предыдущего значения верхней ячейки стека. Появился специальный регистр, который перед любыми арифметическими операциями сохранял значение верхней ячейки.
TEH3OPHblu_nemyx 22.07.2020 21:09 # 0
https://en.wikipedia.org/wiki/HP-19C/-29C
https://en.wikipedia.org/wiki/HP-35
https://en.wikipedia.org/wiki/Hewlett-Packard_Voyager_series
«HP» вообще дальше всех продвинулся в этом направлении. Мало того, что они выпустили стековые калькуляторы со встроенным принтером, они ещё дошли до графических дисплеев:
https://en.wikipedia.org/wiki/HP_48_series
Навороченный микрокалькулятор, у которого нет клавиши «равно», зато есть клавиша «PUSH» (у «HP» она называется «ENTER»).
Кто-нибудь ещё в мире производил что-то подобное? «Вика» упоминает только «Комодор», «Синклер» и какие-то малоизвестные компании (судя по описанию, синклеровский стековый калькулятор — вообще тупая фигня).
bormand 12.07.2020 10:51 # 0
TEH3OPHblu_nemyx 12.07.2020 10:53 # 0
bormand 12.07.2020 11:05 # +1
Модель довольно простенькая - на переходах получаются мосфеты джвух типов. Немного нереалистично что GND нету, но для игры-головоломки сойдёт.
Но в последних заданиях на основе этого довольно сложные микросхемы получаются.
З.Ы. Раз nand можно нарисовать - значит можно все.
TEH3OPHblu_nemyx 12.07.2020 11:22 # 0
Посмотрел демку. Ничего не понял. Как они «N» на «P» переключили?
P.S. Уже понял: Shift.
bormand 12.07.2020 11:45 # 0
TEH3OPHblu_nemyx 12.07.2020 11:51 # 0
bormand 12.07.2020 11:58 # +2
Ну я собственно про это "отсутствие GND" и писал выше. Но ради реализма пришлось бы или подтяжки лепить (nMOS) или вообще по 2 раза всё рисовать (CMOS). А там и так боль в последних задачках. Особенно где про память с произвольным доступом.
З.Ы. Но вообще более низкоуровневой игры я ещё не встречал :)
TEH3OPHblu_nemyx 13.07.2020 11:50 # 0
gost 13.07.2020 11:52 # 0
TEH3OPHblu_nemyx 13.07.2020 11:53 # 0
gost 13.07.2020 12:02 # 0
3.14159265 11.07.2020 22:39 # 0
Вот XOR ральзовывать сложнее всего, поскольку карта Карно неудобная:
Она никак не минимизируется. И нужно очень много элементов:
Потому его выгодно хуйнуть отдельным элементом.
Тем более что это готовый полусумматор.
gostinho 11.07.2020 22:45 # +1
TEH3OPHblu_nemyx 11.07.2020 22:48 # 0
Для реализации в TTL нужно взять 5 базовых NAND-элементов. Кажется, так их и делают, потому что с отдельной реализацией много пердолинга, чтобы совпали уровни сигнала и прочие электрические характеристики.
bormand 11.07.2020 23:08 # +2
c = a nand b
res = (a nand c) nand (b nand c)
TEH3OPHblu_nemyx 11.07.2020 23:22 # 0
vistefan 11.07.2020 23:23 # 0
TEH3OPHblu_nemyx 11.07.2020 23:28 # 0
c = 0, только если a = b = 1.
a nand c = 0, только если a = 1 И c = 1. Последнее возможно, только если b = 0.
b nand c = 0, только если b = 1 И c = 1. Последнее возможно, только если a = 0.
Итого: при a≠b хотя бы одна из скобок равна нулю, следовательно, res = 1.
При a=b обе скобки будут равны 1, следовательно, res = 0.
bormand 11.07.2020 23:42 # +2
Ну дык. Так можно было собрать xor из одной К155ЛА3, я даже пробовал.
bormand 11.07.2020 23:11 # +1
А в CMOS вроде прям как базовый элемент делают. Там нету особо проблем с этим, любую таблицу истинности пильнуть можно, почти как на реле.
bormand 11.07.2020 23:21 # 0
vistefan 11.07.2020 23:25 # 0
bormand 12.07.2020 00:54 # 0
Получается что одна ячейка может в любую функцию от четырёх бит или в джве любых функции от трёх.
vistefan 12.07.2020 01:03 # 0
bormand 11.07.2020 19:50 # +2
Не тупое, а побитовое.
3.14159265 11.07.2020 16:33 # 0
Забавно что у сишников самый ядрённый нейминг.
3.14159265 11.07.2020 16:18 # 0
3.14159265 11.07.2020 16:34 # +1
Вот какие примеры надо Мартину в «Чистый код».
Прочитал переменную и сразу всё понятно.
3.14159265 11.07.2020 16:19 # 0
3.14159265 11.07.2020 16:19 # 0
bormand 11.07.2020 17:33 # +1