42得票6回答
在不进行调试的情况下找到导致非法指令错误的汇编指令

在运行我写的汇编程序时,我遇到了“非法指令”错误。由于我所在的机器没有调试器或任何开发系统,因此有没有一种方法可以知道哪个指令导致错误,而不需要进行调试呢?换句话说,我在一台机器上编译,然后在另一台机器上运行。我无法在编译我的机器上测试程序,因为它们不支持SSE4.2。尽管我运行程序的机器支持...

41得票2回答
tword、oword和yword操作数的大小是多少?

在NASM/YASM manual中,tword、oword和yword操作数的大小是多少?此外,这些名称有什么技巧或基本思想吗?是否有一种方法可以给更大的字长命名逻辑名称? 我知道字长可能因系统而异,NASM的word是2个字节,dword是双倍(4个字节),qword是四倍(8个字节),...

36得票4回答
YASM/NASM x86汇编中立即数和方括号的基本用法

假设我声明了以下内容:section .bss buffer resb 1 这些指令跟随在 section .text 中:mov al, 5 ; mov-immediate mov [buffer], al ...

26得票3回答
如何在Linux上从C源代码生成可编译的NASM汇编代码?

测试平台为32位Linux。 基本上,我知道gcc可以用来生成Intel和At&T风格的汇编代码,但似乎你不能直接使用nasm/tasm来编译gcc生成的Intel风格的汇编代码。 我正在进行一个项目分析,需要在Windows和Linux平台上分析汇编代码,所以我想知道它们是否都可...

16得票2回答
无法从汇编(yasm)代码中调用C标准库函数以在64位Linux上运行

我有一个使用YASM和GCC在Linux(Ubuntu)64位上编译的汇编函数foo。它只是使用puts()将一条消息打印到stdout。下面是其样子:bits 64 extern puts global foo section .data message: db 'foo() ca...

12得票2回答
make:循环依赖已删除。

我已经在Stack Overflow和其他制作手册、网站上搜索很长时间了,但找不到任何在Make函数中存在的尾随空白或错误使用。你能帮我解决这个警告信息吗?make: Circular main.asm.o <- main.asm dependency dropped. Makefile...

11得票2回答
GDB在尝试打印汇编程序中的变量时显示错误消息

在学习汇编语言时,有一份清单列出了一些基本操作: segment .data a dq 176 b dq 4097 segment .text global _start _start: mov rax, [a] ; Move a into rax. a...

11得票5回答
尽管我已经安装了yasm,但找不到它。

我遇到了一个奇怪的问题。我试图安装x264,但在运行sudo ./configure --enable-shared时出现以下提示: 未找到汇编程序 最低版本为yasm-0.7.0 如果你真的想在没有汇编的情况下编译,请使用--disable-asm进行配置。 但我已经安装了yasm-0....

7得票2回答
x86-64最小操作码尺寸的strlen实现

我正在研究一种最小的操作码大小的x86-64 strlen实现,用于我的代码高尔夫/二进制可执行文件,不应超过某个大小(为简单起见,可以考虑DemoScene)。 总体思路来自这里,大小优化思路来自这里和这里。 输入字符串地址在rdi中,最大长度不应超过Int32。 xor eax,e...

7得票1回答
我该如何使用gdb来调试使用yasm汇编的代码?

我已经使用yasm进行了代码组装,并将其链接到我的C ++程序中,但我无法在gdb上设置汇编语言文件中的符号断点。 命令行可能不是非常清晰,但是我们可以尝试一下: "g++" -ftemplate-depth-128 -O0 -fno-inline -Wall -g -fPIC -std...