问题标签 [assembly]

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.

0 投票
3 回答
2293 浏览

linux - 为什么这个 NASM 代码会打印我的环境变量?

这学期我刚完成一门计算机体系结构课程,除其他外,我们一直在涉足 MIPS 汇编并在 MARS 模拟器中运行它。今天,出于好奇,我开始在我的 Ubuntu 机器上摆弄 NASM,基本上只是从教程中拼凑起来,感受 NASM 与 MIPS 的不同之处。这是我目前正在查看的代码片段:

这被保存为 test.asm,并用 .asm 组装nasm -f elf test.asm和链接ld -o test test.o。当我用 调用它时./test anArgument,它会按预期打印“anArgument”,然后是将该字符串填充到总共 200 个字符所需的字符数(由于该mov edx, 200语句)。然而,有趣的是,这些填充字符,我原以为是乱码,实际上是从我的环境变量的开头开始的,正如env命令所显示的那样。为什么这会打印出我的环境变量?

0 投票
2 回答
280 浏览

assembly - 装配资源

您能否为有关 Windows 的 C/C++ 嵌入式程序集的良好资源(书籍、在线教程)提供一些指导?

0 投票
3 回答
2476 浏览

assembly - ELF 格式的可重定位符号(汇编语言)

我们正在为客户端架构开发 GNU 汇编程序的一个端口。现在面临的问题是:

如果一条指令的立即操作数是一个涉及多个可重定位符号的表达式,它在输出文件中如何处理elf格式。这种情况下会产生什么搬迁信息?

例如:

其中 label1 和 label2 定义在可重定位节中,它们可能是相同的节,也可能是不同的可重定位节。

0 投票
5 回答
20127 浏览

assembly - 如何屏蔽 ARM 程序集中的字节?

我有一个 32 位(十六进制)字 0xaabbccdd 并且必须交换 2. 和 3. 字节。最后它应该看起来像 0xaaccbbdd

我如何“屏蔽”第二个和第三个字节以首先将它们加载到寄存器 r1 和 r2 并交换它们。我也知道我必须使用 lsl 和 lsr 命令,但不知道如何开始。

对不起我的英语不好。希望有人能帮助我!

问候,塞巴斯蒂安

0 投票
2 回答
983 浏览

visual-studio-2005 - VS2005 中的 SSE4 指令?

我需要在使用 Visual Stdio 2005 编译的项目中使用 popcnt 指令
。内在函数__popcnt()仅适用于 VS2008,即使我在__asm {}块中编写,编译器似乎也无法识别该指令。

有没有办法做到这一点?

0 投票
16 回答
42909 浏览

c++ - 查找大于或等于给定值的最小幂的算法

我需要找到大于或等于给定值的两个的最小幂。到目前为止,我有这个:

它工作正常,但感觉有点幼稚。有没有更好的算法来解决这个问题?

编辑。有一些很好的汇编程序建议,所以我将这些标签添加到问题中。

0 投票
6 回答
3041 浏览

assembly - 使用 2 个堆栈的计算器

我有一个英特尔装配任务。我需要编写一个使用 2 个堆栈的计算器。例如,我有一个像 23+4/2^4$ 这样的表达式。所以 $ 表示表达式的结尾。我要做的是有两个堆栈,一个用于数字,一个用于运算符,并根据运算符优先级推送和弹出它们。

我需要的是如何同时将 2 个堆栈用于两个不同的目的。只要我知道 esp register 指示堆栈中变量弹出最后一个或推送一个新变量的位置。但是如果我只有一个 esp 寄存器,我怎么能有两个堆栈呢?

提前致谢...

0 投票
5 回答
1224 浏览

video - 未对齐的内存访问

我正在开发不支持未对齐内存访问的嵌入式设备。

对于视频解码器,我必须处理 8x8 像素块中的像素(每个像素一个字节)。该设备具有一些 SIMD 处理功能,允许我并行处理 4 个字节。

问题是,8x8 像素块不能保证从对齐的地址开始,并且函数需要读取/写入最多三个这些 8x8 块。

如果您想要非常好的性能,您将如何处理?经过一番思考,我想出了以下三个想法:

  1. 将所有内存访问作为字节进行。这是最简单的方法,但速度很慢,而且它不适用于 SIMD 功能(这是我目前在参考 C 代码中所做的)。

  2. 编写四个复制函数(每个对齐情况一个),通过两个 32 位读取加载像素数据,将位移动到正确的位置,并将数据写入一些对齐的暂存内存块。然后视频处理功能可以使用 32 位访问和 SIMD。缺点:CPU 将没有机会隐藏处理背后的内存延迟。

  3. 与上述相同的想法,但不是将像素写入暂存内存,而是进行视频处理。这可能是最快的方法,但是我必须为这种方法编写的函数数量很多(我猜大约 60 个)。

顺便说一句:我将不得不在汇编程序中编写所有函数,因为编译器在涉及 SIMD 扩展时会生成可怕的代码。

你会走哪条路,或者你有其他想法如何解决这个问题?

0 投票
1 回答
724 浏览

c++ - 有人对 SSEPlus 有任何经验吗?

SSEPlus是 AMD 的一个开源库,用于统一处理SSE处理器扩展。

我正在考虑将这个库用于我的下一个小项目,并且想知道是否有人有这方面的经验?我可以在英特尔机器上使用它吗?与直接 SSE 调用相比有任何性能问题吗?64位机器有问题吗?除了Framewave之外,还有哪些项目使用它?

0 投票
5 回答
1155 浏览

visual-c++ - 在线汇编语言资源

有人有在 x86 上学习汇编语言的资源吗?我正在尝试在 MSVC++6 中调试程序并经常遇到汇编(例如进入 memcpy)。以前我只是忽略了这些,但 memcpy 不断抛出异常,我需要找出原因。

任何帮助,将不胜感激 :)

编辑:哇,有很多很棒的资源..我希望我可以将所有内容标记为已接受的答案:P

提示:结合任何人?:P

新编辑:我只是浏览了答案,这些似乎是最好的:

Aseraphim针对英特尔 x86的帖子

jkchong 的帖子以获得更多介绍性文字