- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要一些简单的方法在 x86 的汇编程序中划分 64b 无符号整数。我的号码保存在两个 32b 寄存器 EDX:EAX 中,我需要将结果放回 EDX:EAX。因子是 32b 整数。一些代码,请?
最佳答案
如果我正确解释了您的问题(特别是部分 Factor is in 32b integer
),您希望将 64 位被除数除以 32 位除数并得到 64 位商。
如果这种解释是正确的,那么在 32 位代码中实际上很容易做到。
这个想法是您将除数的两个“一半”除以除数,然后将第一次除法的余数重用于第二次除法。
说明如何执行此操作的 C 代码:
#include <stdio.h>
#include <limits.h>
#define C_ASSERT(expr) extern char CAssertExtern[(expr)?1:-1]
#if UINT_MAX >= 0xFFFFFFFF
typedef unsigned int uint32;
#else
typedef unsigned long uint32;
#endif
typedef unsigned long long uint64;
typedef unsigned long ulong;
// Make sure uint32=32 bits and uint64=64 bits
C_ASSERT(sizeof(uint32) * CHAR_BIT == 32);
C_ASSERT(sizeof(uint64) * CHAR_BIT == 64);
int div64by32eq64(uint64* dividend, uint32 divisor)
{
uint32 dividendHi = (uint32)(*dividend >> 32);
uint32 dividendLo = (uint32)*dividend;
uint32 quotientHi;
uint32 quotientLo;
if (divisor == 0)
return 0;
// This can be done as one 32-bit DIV, e.g. "div ecx"
quotientHi = dividendHi / divisor;
dividendHi = dividendHi % divisor;
// This can be done as another 32-bit DIV, e.g. "div ecx"
quotientLo = (uint32)((((uint64)dividendHi << 32) + dividendLo) / divisor);
*dividend = ((uint64)quotientHi << 32) + quotientLo;
return 1;
}
int main(void)
{
static const struct
{
uint64 dividend;
uint32 divisor;
} testData[] =
{
{ 1 , 0 },
{ 0xFFFFFFFFFFFFFFFFULL, 1 },
{ 0xFFFFFFFFFFFFFFFFULL, 2 },
{ 0xFFFFFFFF00000000ULL, 0xFFFFFFFFUL },
{ 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFUL },
};
int i;
for (i = 0; i < sizeof(testData)/sizeof(testData[0]); i++)
{
uint64 dividend = testData[i].dividend;
uint32 divisor = testData[i].divisor;
printf("0x%016llX / 0x%08lX = ", dividend, (ulong)divisor);
if (div64by32eq64(÷nd, divisor))
printf("0x%016llX\n", dividend);
else
printf("division by 0 error\n");
}
return 0;
}
0x0000000000000001 / 0x00000000 = division by 0 error
0xFFFFFFFFFFFFFFFF / 0x00000001 = 0xFFFFFFFFFFFFFFFF
0xFFFFFFFFFFFFFFFF / 0x00000002 = 0x7FFFFFFFFFFFFFFF
0xFFFFFFFF00000000 / 0xFFFFFFFF = 0x0000000100000000
0xFFFFFFFFFFFFFFFF / 0xFFFFFFFF = 0x0000000100000001
; 64-bit dividend
mov edx, 0xFFFFFFFF
mov eax, 0xFFFFFFFF
; 32-bit divisor
mov ecx, 0xFFFFFFFF
push eax
mov eax, edx
xor edx, edx
div ecx ; get high 32 bits of quotient
xchg eax, [esp] ; store them on stack, get low 32 bits of dividend
div ecx ; get low 32 bits of quotient
pop edx ; 64-bit quotient in edx:eax now
; edx:eax should now be equal 0x0000000100000001
关于assembly - 汇编器64b师,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12965098/
什么是“导航”waitForNavigation等待? 网站导航?浏览器刷新图标“导航”以完成旋转? 或者这只是一个措辞笨拙的方法,应该命名为waitForBrowserToLoad ? 但是,当我使
我说的网址是https://www.vudu.com/content/movies/movieslist .我正在尝试滚动浏览电影所在的部分。当我使用以下代码时,它不起作用。 await page.e
我终于想通了如何使用 Node.js。安装了所有库/扩展。所以 puppeteer 正在工作,但就像以前使用 Xmlhttp 一样......它只获取页面的模板/正文,没有需要的信息。在浏览器(Web
我想划分两个 ull 变量并获得最准确的结果。最好的方法是什么? 即5000034/5000000 = 1.0000068 最佳答案 如果你想要“最准确的精度”——你应该避免浮点运算。 你可能想使用一
好的,我已经编程了大约一个星期了,我是从 C++ 开始的。我正在编写一个程序,它是一种算术训练器,你输入你想要的方程式的数量,你输入你对随机数生成器的限制,你指定你想要什么样的方程式(/* - +),
由于浪费了 2 周的时间,我尝试在 AWS Lambda 上安装 Puppeteer 但没有成功。 我试过: https://github.com/sambaiz/puppeteer-lambda-s
你好!在 python 中考虑以下内容: import math num = # Any float... div = # Any float... result_1 = math.floor(num
使用 puppeteer 时,我曾经通过使用以下代码行来获取新选项卡: const browser = await puppeteer.launch() const [page] = await br
如何使用 Puppeteer 检查 HTML 元素是否在视口(viewport)(可见区域)内可见?例如,如果我必须滚动才能看到一个按钮,那么它是不可见的。 page.waitForSelector(
如何将 headless 从假变为真? 如何隐藏浏览器? const browser = await puppeteer.launch({headless: false}) const page =
我无法使用 puppeteer 播放 Youtube 视频。 chromium 好像不支持视频播放。我该怎么办? 这是我的代码: const puppeteer = require('/root/no
需要一个 puppet 特工联系一些不同 puppet 师。 原因:不同的组创建了不同且独立的 list 集。 可能的组及其任务 应用程序供应商:应用程序的配置 安全性:强化 运营:路由表、监控工具
我的目标是获取 .textContent来自不同标签,每个都位于单独的 中. 我认为问题在于 table变量,因为我没有为 child 检查正确的变量。目前,data变量只获取第一个 , 所以 p
我尝试从多个页面截取屏幕截图,这些页面应该已完全加载(包括延迟加载的图像)以供以后比较。 我找到了 lazyimages_without_scroll_events.js example这很有帮助。
时不时地,一个页面会很挑剔,并且会出现这样的错误: UnhandledPromiseRejectionWarning: Error: Protocol error (Runtime.callFunct
我在 Linux 环境中,我想了解如何指定它应该用于 Chromium 的路径。目前,这是我遇到的错误: Chromium revision is not downloaded. Run "npm i
如何找到一个不起眼的单选按钮元素并在 puppeteer 中单击它? 我看过很多文章说“只需使用evaluate(),然后单击它”或类似的内容,但这在我的场景中不起作用。 这是我所拥有的: page.
问题来源:我无法按原样使用 Javascript,因为 Firebase Functions Node.Js 版本尚不支持 Async/Await。所以我把它放在 Typescript 中,现在正在尝
使用 Reactjs 开发的网站,在后端与以太坊智能合约进行交互。 此智能合约需要一个 chrome 扩展程序(metamask)进行交易。 现在,在使用 puppeteer 时,它在 chrome
var snd2 = new Audio("data:audio/wav;base64,//uQRAAAAWMSLwUIYAAsYkXgoQwAEaYLWfkWgAI0wWs/ItAAAGDgYtAg
我是一名优秀的程序员,十分优秀!