- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Hex-Rays 反编译了一些 dll,然后尝试将其再次编译为 MATLAB MEX。由于 Hex 将 double * 反编译为 int 并且我使用的是 win 7 64 我类型转换双 * 使用 uintptr_t。不幸的是,有时我会遇到“段错误”。
这是我的代码
#include "mex.h"
#include <stdint.h>
double __stdcall dzSell(int a1, double a2, int a3, int a4, int a5)
{
int v5; // ecx@1
double v6; // st7@3
double result; // st7@4
int v8; // ebp@5
double v9; // st6@5
double v10; // st5@5
int v11; // edx@5
int v12; // esi@6
int v13; // ecx@6
double v14; // rt0@10
double v15; // st5@10
double v16; // st6@10
double v17; // rt1@12
double v18; // rt2@15
double v19; // st5@15
double v20; // st6@15
double v21; // rtt@17
double v22; // rt0@20
double v23; // st5@20
double v24; // st6@20
double v25; // rt1@22
double v26; // rt2@25
double v27; // st5@25
double v28; // st6@25
double v29; // rtt@27
int v30; // esi@29
int v31; // ecx@29
double v32; // rt0@33
double v33; // st5@33
double v34; // st6@33
double v35; // rt1@35
signed int v36; // edi@36
double v37; // st3@36
double v38; // st4@36
double v39; // st2@37
double v40; // st2@38
double v41; // rt1@38
double v42; // st2@38
double v43; // rt2@38
signed int v44; // esi@40
double v45; // st1@40
int v46; // edx@41
int v47; // ecx@41
double v48; // rt0@43
double v49; // st1@43
double v50; // st4@43
double v51; // rtt@45
double v52; // st5@47
double v53; // st3@47
double v54; // rtt@48
double v55; // rt1@48
double v56; // st3@48
double v57; // rt2@48
double v58; // [sp+4h] [bp-8h]@3
int v59; // [sp+20h] [bp+14h]@1
int v60; // [sp+20h] [bp+14h]@5
v5 = a4 - a5;
v59 = a4 - a5;
if ( v59 >= a3 )
v59 = a3;
v6 = (double)v59;
v58 = v6;
if ( v6 >= 1.0 )
{
v8 = v5 - 1;
v9 = *(double *)(a1 + 8 * (v5 - 1));
v10 = v9;
v60 = a1 + 8 * (v5 - 1);
v11 = 1;
if ( a3 - 1 < 4 )
{
LABEL_28:
if ( v11 < a3 )
{
v30 = v8 - v11;
v31 = a1 + 8 * (v8 - v11);
do
{
if ( v30 < 0 )
break;
if ( v10 < *(double *)v31 )
v10 = *(double *)v31;
v32 = v10;
v33 = v9;
v34 = v32;
if ( v33 > *(double *)v31 )
v33 = *(double *)v31;
++v11;
v35 = v33;
v10 = v34;
v9 = v35;
v31 -= 8;
--v30;
}
while ( v11 < a3 );
}
}
else
{
v12 = v5 - 4;
v13 = a1 + 8 * (v5 - 4);
while ( v12 + 2 >= 0 )
{
if ( v10 < *(double *)(v13 + 16) )
v10 = *(double *)(v13 + 16);
v14 = v10;
v15 = v9;
v16 = v14;
if ( v15 > *(double *)(v13 + 16) )
v15 = *(double *)(v13 + 16);
v17 = v15;
v10 = v16;
v9 = v17;
if ( v12 + 1 < 0 )
break;
if ( v10 < *(double *)(v13 + 8) )
v10 = *(double *)(v13 + 8);
v18 = v10;
v19 = v9;
v20 = v18;
if ( v19 > *(double *)(v13 + 8) )
v19 = *(double *)(v13 + 8);
v21 = v19;
v10 = v20;
v9 = v21;
if ( v12 < 0 )
break;
if ( v10 < *(double *)v13 )
v10 = *(double *)v13;
v22 = v10;
v23 = v9;
v24 = v22;
if ( v23 > *(double *)v13 )
v23 = *(double *)v13;
v25 = v23;
v10 = v24;
v9 = v25;
if ( v12 - 1 < 0 )
break;
if ( v10 < *(double *)(v13 - 8) )
v10 = *(double *)(v13 - 8);
v26 = v10;
v27 = v9;
v28 = v26;
if ( v27 > *(double *)(v13 - 8) )
v27 = *(double *)(v13 - 8);
v11 += 4;
v29 = v27;
v10 = v28;
v9 = v29;
v13 -= 32;
v12 -= 4;
if ( v11 >= a3 - 3 )
goto LABEL_28;
}
}
v36 = 50;
v37 = 0.5;
v38 = (v10 + v9) * 0.5;
if ( v38 - v9 <= 0.005 )
{
result = v38;
}
else
{
v39 = 0.0;
while ( v36 > 0 )
{
v44 = 0;
v45 = v39;
if ( v39 < v6 )
{
v46 = v60;
v47 = v8;
do
{
if ( v47 < 0 )
break;
v48 = v45;
v49 = v38;
v50 = v48;
if ( v49 < *(double *)v46 )
v39 = v39 + 1.0;
++v44;
v46 -= 8;
--v47;
v51 = v49;
v45 = v50;
v38 = v51;
}
while ( (double)v44 < v6 );
}
if ( a2 - 0.001 <= v39 / v6 )
{
v54 = (v38 + v10) * v37;
v9 = v38;
v55 = v37;
v56 = v10;
v52 = v55;
v57 = v56;
v53 = v54;
v38 = v57;
}
else
{
v52 = v37;
v53 = (v38 + v9) * v37;
}
--v36;
if ( v53 - v9 <= 0.005 )
return v53;
v6 = v58;
v40 = v52;
v10 = v38;
v41 = v40;
v42 = v53;
v37 = v41;
v43 = v42;
v39 = v45;
v38 = v43;
}
result = v38;
}
}
else
{
result = 2147483647.0;
}
return result;
}
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
double *buffer;
double Probability;
int DzLookBackBars;
int Bars;
int i;
double result;
// Check inputs
if (nrhs != 5) {//if the user has given anything but one arg, then error
mexErrMsgIdAndTxt("Numerical:myGetPr:nrhs", "Require 5 args");
}
if (!mxIsNumeric(prhs[0])) {//if input is not numeric (for example a string), then errror
mexErrMsgIdAndTxt("Numerical:myGetPr:isnumeric", "Require args that is numeric");
}
if(nlhs!=1) {
mexErrMsgIdAndTxt("MyToolbox:arrayProduct:nlhs","One output required.");
}
/* make sure the first input argument is type double */
if( !mxIsDouble(prhs[0]) ||
mxIsComplex(prhs[0])) {
mexErrMsgIdAndTxt("MyToolbox:arrayProduct:notDouble","Input matrix must be type double.");
}
// Check output
int dims[] = {1,1}; //dimensions of output
buffer = mxGetPr(prhs[0]);
Probability = mxGetScalar(prhs[1]);
DzLookBackBars = mxGetScalar(prhs[2]);
Bars = mxGetScalar(prhs[3]);
i = mxGetScalar(prhs[4]);
result = dzSell ((uintptr_t)buffer, Probability, DzLookBackBars, Bars, i);
plhs[0] = mxCreateDoubleScalar(result);
}
这里是证明转换错误的屏幕
知道如何处理吗???
Hex-Rays反编译数组的例子在这里
Hex-Rays decompiles array to int
这里是反汇编文件
http://www.mediafire.com/view/w82l6somwr7o450/dissasembly.txt
克日什托夫
最佳答案
将反编译器视为让您领先一步,而不是生成好的代码。
特别是,它创建的代码根本不可移植。为了能够针对不同的指针大小进行编译,您需要修复类型信息。
关于c++ - Hex-rays、MATLAB、MEX、转换 uintptr_t 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35144284/
我正在尝试将一个字符串逐个字符地复制到另一个字符串中。目的不是复制整个字符串,而是复制其中的一部分(我稍后会为此做一些条件......) 但我不知道如何使用迭代器。 你能帮帮我吗? std::stri
我想将 void 指针转换为结构引用。 结构的最小示例: #include "Interface.h" class Foo { public: Foo() : mAddress((uint
这有点烦人:我有一个 div,它从窗口的左上角开始过渡,即使它位于文档的其他任何位置。我试过 usign -webkit-transform-origin 但没有成功,也许我用错了。有人可以帮助我吗?
假设,如果将 CSS3 转换/转换/动画分配给 DOM 元素,我是否可以检测到该过程的状态? 我想这样做的原因是因为我正在寻找类似过渡链的东西,例如,在前一个过渡之后运行一个过渡。 最佳答案 我在 h
最近我遇到了“不稳定”屏幕,这很可能是由 CSS 转换引起的。事实上,它只发生在 Chrome 浏览器 上(可能还有 Safari,因为一些人也报告了它)。知道如何让它看起来光滑吗?此外,您可能会注意
我正在开发一个简单的 slider ,它使用 CSS 过渡来为幻灯片设置动画。我用一些基本样式和一些 javascript 创建了一支笔 here .注意:由于 Codepen 使用 Prefixfr
我正在使用以下代码返回 IList: public IList FindCodesByCountry(string country) { var query =
如何设计像这样的操作: 计算 转化 翻译 例如:从“EUR”转换为“CNY”金额“100”。 这是 /convert?from=EUR&to=CNY&amount=100 RESTful 吗? 最佳答
我使用 jquery 组合了一个图像滚动器,如下所示 function rotateImages(whichHolder, start) { var images = $('#' +which
如何使用 CSS (-moz-transform) 更改一个如下所示的 div: 最佳答案 你可以看看Mozilla Developer Center .甚至还有例子。 但是,在我看来,您的具体示例不
我需要帮助我正在尝试在选中和未选中的汉堡菜单上实现动画。我能够为菜单设置动画,但我不知道如何在转换为 0 时为左菜单动画设置动画 &__menu { transform: translateX(
我正在为字典格式之间的转换而苦苦挣扎:我正在尝试将下面的项目数组转换为下面的结果数组。本质上是通过在项目第一个元素中查找重复项,然后仅在第一个参数不同时才将文件添加到结果集中。 var items:[
如果我有两个定义相同的结构,那么在它们之间进行转换的最佳方式是什么? struct A { int i; float f; }; struct B { int i; float f; }; void
我编写了一个 javascript 代码,可以将视口(viewport)从一个链接滑动到另一个链接。基本上一切正常,你怎么能在那里看到http://jsfiddle.net/DruwJ/8/ 我现在的
我需要将文件上传到 meteor ,对其进行一些图像处理(必要时进行图像转换,从图像生成缩略图),然后将其存储在外部图像存储服务器(s3)中。这应该尽可能快。 您对 nodejs 图像处理库有什么建议
刚开始接触KDB+,有一些问题很难从Q for Mortals中得到。 说,这里 http://code.kx.com/wiki/JB:QforMortals2/casting_and_enumera
我在这里的一个项目中使用 JSF 1.2 和 IceFaces 1.8。 我有一个页面,它基本上是一大堆浮点数字段的大编辑网格。这是通过 inputText 实现的页面上的字段指向具有原始值的值对象
ScnMatrix4 是一个 4x4 矩阵。我的问题是什么矩阵行对应于位置(ScnVector3),旋转(ScnVector4),比例(ScnVector3)。第 4 行是空的吗? 编辑: 我玩弄了
恐怕我是 Scala 新手: 我正在尝试根据一些简单的逻辑将 Map 转换为新 Map: val postVals = Map("test" -> "testing1", "test2" -> "te
输入: This is sample 1 This is sample 2 输出: ~COLOR~[Green]This is sample 1~COLOR~[Red]This is sam
我是一名优秀的程序员,十分优秀!