问题标签 [yasm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
memory - asm 使用内存位置操作数
我在定义“内存位置”时遇到了麻烦。根据“英特尔 64 和 IA-32 软件开发人员手册”,许多指令可以使用内存位置作为操作数。例如 MOVBE(交换字节后移动数据):
指令:MOVBE m32 , r32
现在的问题是如何定义内存位置;我尝试使用 .bss 部分中定义的变量:
编辑:->
<-EDIT
如果 SHR 被注释掉 yasm (yasm -f elf64 .asm) 编译没有问题,但是在执行 stdio 时显示:非法指令
如果 MOVBE 被注释掉,编译时会出现以下错误:错误:操作数 1 的大小无效
如何为使用指令集参考中显示的“m”选项分配内存?
[CPU=x64,编译器=yasm]
assembly - 用奇怪的常数理解小的 asm 代码
我正在解决“xchg rax,rax”(xchg.xorpd.net)的谜题。这些都是关于 x86_64 汇编的谜语,您必须了解代码片段的作用。这是谜语号 0x15:
似乎这段代码旨在以某种方式增强 rax 内部的价值,尽管我不完全理解如何。我试图提供一些输入和输出,但我还没有理解这段代码的作用。这个 0xffffffff80000000 数字是什么?有人可以为我指出解决方案的正确方向吗?我真的很好奇这个。
macos - 尝试通过 mac 终端安装 FFmpeg 并且无法 cd 进入 yasm 文件夹
我无法通过终端扩展 yasm 存档,所以我通过 Finder 进行了扩展,然后返回终端以 cd 进入文件夹,它说它不存在,即使我在 Finder 中查看它也是如此。我错过了什么?
我截图了,但我的声誉还不够高,无法发布。在这里你可以看到它:
assembly - 装配中的 FizzBuzz - 分段错误
我正在尝试在 Assembly 中编写 FizzBuzz,但我一直看到分段错误。到目前为止,我已经确定这不是我的打印例程(因为我已经删除了它们的内容并且问题仍然存在)并且错误隐藏在主函数的某处。
当我运行程序时,我得到了这个输出:
让我相信使用除法和查找余数不是问题。但我可能是错的,我已经两年没做过组装了......
我正在编译使用:
optimization - x86 内联 yasm 转换为 x64
我有项目使用内联 yasm 来实现。现在,该项目使用 openMP 来并行任务以获得更好的性能。在 x86 平台,openMP 无法运行,原因是 x86 环境没有足够的内存。所以我使用x64环境编译它,它可以运行。但是当我使用yasm代码优化性能时,它就不行了。(yasm的代码是x86环境编写的。)
我搜索了所有相关信息,但找不到任何有用的信息来解决这个问题。
谁能告诉我解决问题的方法。我想查看一些带有关系信息的文档。
谢谢您的帮助。
assembly - 在Assembly中循环字符串的字符
如果我有一个字符串列表,如何遍历每个字符串的每个字符?说一个清单data
我如何去访问每个成员?我知道每个字符串的长度是 9 的恒定长度,并且我理解对于普通类型byte[data+rsi]
,rsi 是我的计数器,但是当字符串在播放时会做什么?
c++ - XCode 使用 YASM 编译 C++ 库中的程序集文件
我有一个 C++ 静态库,我需要在 Mac OS X (Maverick) 64 位上构建。该库使用 C++,还有一些 .asm MMX 指令文件。C++ 编译器是 Clang 所以我还需要 YASM 编译器。在 Linux 和Windows 我设法让所有设置相对容易,但我在 Mac 上遇到了一些问题。
首先,我根据这篇文章在 MAC 上安装了 YASM 。
然后我按照此处的说明将 YASM 作为构建工具添加到 XCode 。
现在,如果以前我收到错误说 .asm 文件内容无法解析,现在这些都消失了。相反,我在 std::ratio 和 std::chrono 文件中有多个错误。
他们中的大多数是这样的:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/c++/v1/ratio:252:81:未知类名'false_type';你的意思是'::std::false_type'吗?
现在,我在另一个库中遇到了这些错误,链接 vs libstdc++.dylib 解决了它。但不是在这里。此外,如果我转到“构建设置”并在“Apple LLVM 5.0 -Language -C++”下将 CLANG_CXX_LIBRARY 从 libc++ 更改为 libstdc++,那么之前的错误就消失了,我开始从 localefwd.h 和 locale_classes.h 收到错误
在我看来,可能是我的 YASM 编译选项错误,或者 YASM 没有与 libstdc++ 链接?或者它可能与 YASM 无关?
assembly - yasm,使用 64 位寄存器作为指向列表的指针,并且偏移量为 32 位寄存器
我无法将我以前的一些代码移动到汇编中的全局函数中。我有一个算法可以接受len
,列表的长度在lst
哪里,并且是双字列表本身。在将其移入我正在使用的功能之前len
lst
dword[lst+edi*4] ; offset
但现在它lst
被转化为rdi
书面
dword[rdi+edi*4]
给我一个错误“错误:无效的有效地址”
我该怎么做才能避免这种情况?
assembly - 了解 x86 64bit ror、shl
我无法理解 ror 和 shl 在汇编中到底做了什么。我看到了定义,例如 ror:将位向右旋转并返回到左侧的高位。
但这意味着什么?我只是无法绕过它。就像如果
怎么了?
assembly - 汇编:将字符串的内容复制到另一个寄存器中
我无法弄清楚如何将一个字符串的内容复制到另一个字符串中。这是我正在使用的内容:给定一个寄存器中的字符串地址rbx
,我需要将该字符串地址的内容复制到另一个寄存器中(参数 4)rdx
。
这是我目前正在做的事情
问题是qword
这只允许我将8个字符存储到 rdx 中,而实际最大值是 80(只是我在程序开始时定义的任意最大值)。我当然可以更改qword
为dqword
,但这并不能解决我的问题,因为它会从 8 个字符变为 16 个字符。如果我将字符串传递给Arguments
上面的函数,我将被返回Argument
,因为复制分配只处理 8 个字符。
我提前道歉,因为这可能是一个非常简单的解决方案,但我对组装很陌生。如何将一个字符串的内容移动到另一个字符串?