Я так понимаю lpEnumFunc - просто указатель на пользовательскую callback-функцию, а все данные передаваемые в нее закодированы в lParam
BOOL CALLBACK EnumWindowsProc(
_In_ HWND hwnd,
_In_ LPARAM lParam
);
struct enumWindowsParams {
WNDENUMPROC lpEnumProc;
LPARAM lParam;
};
BOOL CALLBACK myEnumFunc(
_In_ HWND hwnd,
_In_ LPARAM lParam
)
{
// use hwnd as needed
struct enumWindowsParams *ewp = (struct enumWindowsParams *)lParam;
return ewp->lpEnumProc(hwnd, ewp->lParam);
}
BOOL WINAPI FalseEnumWindows(
_In_ WNDENUMPROC lpEnumFunc,
_In_ LPARAM lParam
)
{
struct enumWindowsParams ewp;
ewp.lpEnumFunc= lpEnumFunc;
ewp.lParam = lParam;
BOOL result = TrueEnumWindows(myEnumFunc, (LPARAM)&ewp);
return result;
}
IDIV 2
CMP AL,2
JGE M2
M1: MOV AL,ARRAY_X[SI]
TEST AL, 1
JZ M2
MOV ARRAY_Y[DI],AL
INC DI
M2: INC SI
LOOP M1
Как полбайтовые числа упаковать в 4 байтвое число, при помощи арифметических действий?
uint32_t put_nibble(uint32_t v, int nibble_index, uint32_t nibble)
{
uint32_t p = 1;
uint32_t r;
int i;
for (i = 0; i < nibble_index; ++i)
p *= 16;
r = (v % p) + (nibble * p);
if (nibble_index < 7)
r += (v / (p * 16)) * p * 16;
return r;
}
#include <inttypes.h>
#include <stdlib.h>
static int width(uint64_t v)
{
int i;
for (i = 0; v; ++i)
v >>= 1;
return i;
}
uint64_t big_rand(uint64_t low, uint64_t high)
{
uint64_t d = high - low;
int rn;
int n;
assert(low < high);
rn = width(RAND_MAX);
n = width(d);
for (;;) {
uint64_t v = 0;
int i;
for (i = 0; i < n; i += rn) {
v |= rand() << i;
}
if (i != n) {
v &= ~(((UINT64_C(1) << (i - n)) - 1) << n);
}
if (v <= d) {
return v + low;
}
}
}
Zilog Z80 — 8-битный процессор аддресует 16 битную шину... Как ведь нету 16 битных регистров, mov al,[ax] не получиться... Не могу понять.
Может подскажете ключевые аспекты создание эмулятора процессора, ну что-то в том роде, моя идея такова, что есть кучка команд они в типе данных char, допустим команда 01 это movrr, это rr это переместить из регистра данные в другой регистр так-же есть movrn переместить в регистр число константу и так далее.
Как реализовать разные там порты итд. Все в тому духе что знаете
Перейдя в ветку dev, я делаю изменения в файле. Само собой в ветке master видно, что файл изменился и git status покажет, что есть изменения.