a * x = b
Run Code Online (Sandbox Code Playgroud)
我有一个看似相当复杂的乘法/ imul问题:如果我有一个并且我有b,如果它们都是32位双字(例如0-1 = FFFFFFFF,FFFFFFFF + 1 = 0),我怎么能计算x?例如:
0xcb9102df * x = 0x4d243a5d
Run Code Online (Sandbox Code Playgroud)
在这种情况下,x是0x1908c643.我发现了一个类似的问题,但前提是不同的,我希望有一个比给出的更简单的解决方案.
五分钟前,当我轻按f5并出现102个错误时,一切运行正常:
error: C2440: 'initializing' : cannot convert from 'const char [17]' to 'char *'
Conversion from string literal loses const qualifier (see /Zc:strictStrings)
Run Code Online (Sandbox Code Playgroud)
该特定行位于第30行:
char* hexchars = "0123456789ABCDEF";
Run Code Online (Sandbox Code Playgroud)
至少一个星期以来,我都没有触摸过错误所在的文件。我通常会说我不小心更改了编译args中的某些内容,但是自从在错误开始之前就没有打开设置。
有任何想法吗?我一定是心不在changed地更改了某些设置,但我真的不记得想过“嗯,我刚刚做了什么?”
对于侧面项目,我试图编写一个半可编程的x86虚拟机.
我理解格式,因此大部分设计都相对简单,但在执行带有操作数的指令后,标志经常会改变.检查每个潜在的位是非常低效的,所以我想把标志寄存器弹出到VM中,然后设置它,然后设置VM的标志寄存器.但是,这仍然是很多开销.
这是一种立场的观点,但我有什么遗漏?
我的目标是使用win32的各种绘图功能,使用全屏覆盖不可见的"画布".
我目前正在尝试的方式是:
WNDCLASSA myclass = { 0 };
myclass.lpfnWndProc = WindowProc3;
myclass.hInstance = GetModuleHandle(0);
myclass.lpszClassName = "MyCanvas";
myclass.hbrBackground = CreateSolidBrush(0xFEEDBEEF);
myclass.hCursor = LoadCursor(0, IDC_ARROW);
RegisterClassA(&myclass);
Run Code Online (Sandbox Code Playgroud)
...
HWND wnd = CreateWindowExA(WS_EX_TOPMOST | WS_EX_LAYERED | WS_EX_TRANSPARENT, "MyCanvas", 0, WS_POPUP | WS_VISIBLE, 0, 0, screen_width, screen_height, 0, 0, GetModuleHandle(0), 0);
SetLayeredWindowAttributes(wnd, 0xFEEDBEEF, 0, LWA_COLORKEY);
Run Code Online (Sandbox Code Playgroud)
虽然这可以作为一个画布,几个小时的谷歌搜索后,我仍然无法透视它.
在我写这篇文章时,我添加了我的程序当前显示的截图.我希望能够做的是,例如,使右上角的黑框(绘制Rectangle)半透明,以便显示它下面的stackoverflow页面内容.
这个问题我发现我很有希望,但结果文本只是背景颜色((COLORREF)0xFEEDBEEF)和文字颜色的混合组合.我发现的其他事情要么让元素完全不可见,什么都不做,要么像MFC那样需要一些库.我想尽可能只使用win32功能,因为我希望能够达到最高的FPS.
我不在乎这是否适用于所有Windows版本,只要它在7到10之间.