关于这一点已经存在一个问题,但它被关闭为"含糊不清",所以我开了一个新的 - 我找到了答案,也许它也会帮助其他人.
问题是:如何编写汇编代码序列来初始化具有128位立即(常量)值的XMM寄存器?
我有一个像这样的跟踪失败的Spark工作:
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr-Container id: container_1455622885057_0016_01_000008
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr-Exit code: 52
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr:Stack trace: ExitCodeException exitCode=52:
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr- at org.apache.hadoop.util.Shell.runCommand(Shell.java:545)
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr- at org.apache.hadoop.util.Shell.run(Shell.java:456)
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr- at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:722)
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr- at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:211)
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr- at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:302)
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr- at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:82)
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr- at java.util.concurrent.FutureTask.run(FutureTask.java:262)
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr- at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr- at java.lang.Thread.run(Thread.java:745)
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr-
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr-
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr-Container exited with a non-zero exit code 52
Run Code Online (Sandbox Code Playgroud)
我花了一段时间才弄清楚"退出代码52"是什么意思,所以我把它放在这里是为了其他可能正在搜索的人的利益
我意识到Visual Studio有"/ P"选项来生成预处理文件,但它非常不方便.我正在寻找一个插件,允许您右键单击文件并选择"查看预处理" - 或任何类似的解决方案,基本上预处理当前打开的文件(使用当前配置中的相应选项)并显示输出,没有额外的麻烦.这样的事情存在吗?
好的,所以我知道可移植性不是C++的强项,但我必须在Mac和Windows上运行我的代码.我想出了一个解决方案,但它并不完美,而且我很想知道是否有人可以推荐更好的解决方案.
我需要在几个DLL/bundle中使用类层次结构 - 例如,我有一个抽象基类BaseClass; 我扫描给定的目录中的DLL,并为每个DLL,我寻找工厂方法BaseClass*CreateObject(); - 返回"BaseClass".我有一个"共享头文件",我包含在"主可执行文件"和DLL中,它声明BaseClass像这样
#ifdef _MAC
#define DECLSPEC
#else
#ifdef COMPILING_DLL
#define DECLSPEC __declspec(dllexport)
#else
#define DECLSPEC __declspec(dllimport)
#endif
#endif
class DECLSPEC BaseClass{
[.. base "interface" declaration .. ]
}
Run Code Online (Sandbox Code Playgroud)
然后,在我的DLL中,我通常会包含BaseClass声明,并声明我自己的"具体"类:
class MyDllClass:public BaseClass{
[.. actual DLL class definition/implementation here goes here ...]
}
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.现在由于某种原因,我需要在两个不同类型的BaseObjects之间区分我的主要可执行文件 - 比如我有一个DescriptionClass和一个ActionClass,它们都是BaseClass,但是接口略有不同.我的第一个实现是简单地修改"共享头"并添加:
class DECLSPEC DescriptionClass{
[.. base "Description interface" declaration .. ]
}
class DECLSPEC ActionClass{
[.. base "Action interface" declaration .. ]
}
Run Code Online (Sandbox Code Playgroud)
然后我的DLL将成为:
class MyDllClass:public ActionClass /* or DescriptionClass, …
Run Code Online (Sandbox Code Playgroud) 我已经在我的计算机上安装了Windows7,我不得不更改所有权限/取得所有权 - 这显然"触及"了我的所有文件,现在一切似乎都被"修改"(当我做"hg status"时),但只有一些文件有实际的变化.
是否有一个命令我可以运行,以便"提交"或"恢复"所有没有实际更改的文件(即文本未更改,即使文件属性已更改).
添加:
我已经从WinXP升级到Win7.我实际上并没有"复制"任何东西,磁盘上的存储库是相同的....它只是改变了Windows.升级后,我无法访问某些文件,我需要"取得所有权"才能重新获得访问权限(不知何故,用户权限未得到妥善保存).这是我得到的:
$ hg stat
../../test/acceptance/spidermonkey/js1_5/String/regress-179068.as M
$ hg diff ../../test/acceptance/spidermonkey/js1_5/String/regress-179068.as
Run Code Online (Sandbox Code Playgroud)