问题标签 [inline-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 投票
2 回答
2224 浏览

visual-studio - 在 Visual Studio 2008 中使用 NASM 作为内联汇编编译器?

我设法将 NASM 设置为单独的 .asm 文件的编译器,但我找不到将 NASM 设置为内联汇编器的编译器(__asm 指令)的方法。例如,

不会编译(汇编语法错误,找到“db”)。有没有办法做到这一点 ?还是我一定要使用 MASM 或使用其他开发环境?谢谢 !

ps:顺便说一句,MSDN 没有给出任何线索:D

0 投票
1 回答
1138 浏览

gcc - 内联汇编错误,阻止 gcc 编译尝试

问候,所以。

我有一些代码尝试使用 gcc 进行编译,但我的尝试遭到了挫败。任何更精通的人可以帮助我解决这个问题,也许我缺少一些东西。

我正在 Linux Kitchen 2.6.28-15-generic #49-Ubuntu SMP Tue Aug 18 19:25:34 UTC 2009 x86_64 GNU/Linux 上编译此代码。

返回的错误是:

谢谢大家。

0 投票
6 回答
1671 浏览

c - 使用 C 和内联汇编初学者问题

我只是在测试并尝试学习汇编程序如何与 C 一起工作。所以我浏览了一些教程,我发现了这个:

}

我遇到的问题是我无法运行它,我可以在 Microsoft Visual Studio 2008 的 main 方法中编译它,但是当我运行它时,它会产生这个错误:

Test.exe 中 0x00da3660 处的未处理异常:0xC0000005:访问冲突读取位置 0xffffffff。

在第二行,mov es,ax //lägg startadressen i es

难道程序是16位的,VS 2008编译成32位的程序?如果是这样,您可以强制 VS 2008 以不同方式编译它吗?

有谁知道一个好的内部汇编教程?

0 投票
2 回答
2147 浏览

gcc - Asm代码说明

以下 GCC 内联汇编取自 LuaJit 的 coco 库。有人可以逐行解释它的作用吗?

谢谢

0 投票
2 回答
521 浏览

c++ - 切换 C++ 函数的调用堆栈

这是我之前关于切换 C 调用堆栈的问题。但是,C++ 使用不同的调用约定(thiscall)并且可能需要一些不同的 asm 代码。有人可以解释差异并指出或提供一些切换 C++ 调用堆栈的代码片段(最好在 GCC 内联 asm 中)吗?

谢谢,詹姆斯

0 投票
1 回答
8219 浏览

c - 转换问题:__asm__ __volatile__ 从 GNU C 到 MSVC 用于输入/输出包装器

我在 Linux 环境中处理 Nasm 和 GNU C 内联 asm 已经有一段时间了,这个功能效果很好......但现在我正在切换到 Windows 环境,我想使用 Masm(与 VS2008)我似乎无法得到这个工作...

当我写出这样的...

asm 不再被识别并且 volatile 抛出一个错误,说“字符串”,我也尝试写 _asm volatile 但我收到一个错误,说“'操作码'中的内联汇编语法错误;找到'数据类型'”

0 投票
3 回答
6909 浏览

c++ - 在 C++ 内联汇编中定义一个变量

假设我们有以下 c++ 代码:

现在,我想知道的是,如果我不想在 __asm 指令之外定义 var1,我需要做什么才能将其放入其中。甚至可能吗?

谢谢

0 投票
3 回答
33999 浏览

linux - Linux 汇编器错误“'asm' 中的不可能约束”

我从 Linux 下的汇编程序开始。我已将以下代码保存为 testasm.c
并使用以下代码对其进行编译: gcc testasm.c -otestasm
编译器回复:“'asm' 中的不可能约束”。

我该如何解决这个问题?(我从这里复制了这个例子。)

Debian Lenny,内核 2.6.26-2-amd64
gcc 版本 4.3.2 (Debian 4.3.2-1.1)

解决方案
查看接受的答案 - 似乎不再支持“修改”子句。

0 投票
4 回答
7948 浏览

c - 一个没有#include的简单C程序

如何在不包括 stdio.h 的情况下直接调用“printf”?

我在这里找到了一个有趣的教程:
http ://www.halcode.com/archives/2008/05/11/hello-world-c-and-gnu-as/

所以,这是我的尝试:

我正在使用 MinGW 4.4,这是我的编译方式:

gcc -c hello.c -o hello.o
ld hello.o -o hello.exe C:/mingw/lib/crt2.o C:/mingw/lib/gcc/mingw32/4.4.0/crtbegin.o C: /mingw/lib/gcc/mingw32/4.4.0/crtend.o -LC:/mingw/lib/gcc/mingw32/4.4.0 -LC:/mingw/lib -lmingw32 -lgcc -lmsvcrt -lkernel32

不幸的是,它失败了:

hello.o:hello.c:(.text+0x26): 未定义对 `ss' 的引用

如何解决这个问题?

0 投票
2 回答
506 浏览

c - C中的内联汇编:动态寄存器

我正在尝试在我的 C 代码中内联一些汇编代码:

问题:我想动态定义寄存器和值。我知道'val'可以是用C代码编写的变量,但我不知道如何动态选择寄存器(即根据用户输入决定-寄存器'dh'或'dl')。

有什么建议么?