问题标签 [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 投票
1 回答
2502 浏览

c - C 中的内联汇编:INT 命令和 C 变量

我正在尝试使用 C 变量在 C 代码中使用汇编。我的代码如下所示:

其中'interruptValue' 是我从用户那里得到的一个变量(例如15 或15h)。当我尝试编译时,我得到:

汇编器错误:'无效的指令操作数'

我不知道 interruptValue 的正确类型是什么。我试过 long\int\short\char\char* 但它们都不起作用。

0 投票
3 回答
835 浏览

c - 内联汇编和函数覆盖导致段错误

SO的某个人发布了一个问题,询问他如何“隐藏”一个功能。这是我的回答:

但是,有问题:

我的第一个问题是为什么内联汇编失败了......正确的方法是什么?另一件事——“ret”或“retn”的代码是 0x00 ,对……我的代码 xor 的东西直到它返回……那为什么它是 SEGFAULTing 呢?

0 投票
1 回答
2084 浏览

c - 翻译内联汇编以支持 x64

我有一个用 C 代码编写的小型内联汇编代码。asm 遍历一个数组,如果需要,将值从不同的数组移动到寄存器。最后,调用中断。代码与此类似:

这一切都在 x86 中工作,但根据微软的说法:x64 不支持内联汇编。如何将其全部翻译为支持 x64?我找不到编译器内在过程来执行我想要的,我不知道如何将参数传递给外部 asm 文件。

0 投票
2 回答
1377 浏览

c - 包括在内联汇编中

我们正在开发一个玩具操作系统作为课堂作业。我在编写内核恐慌函数时遇到了一些麻烦。

它应该保存所有寄存器,调用一些类似 printf 的函数,然后打印保存的寄存器并停止 cpu。现在它被定义为一个宏:

_panic_context是一个全局变量,包含线程的已保存寄存器和更多内容。问题出在SAVE_REGISTERS. 它是在汇编头文件中某处定义的宏,但我不知道如何包含它。文件中的简单#include 显然不起作用。我试过用谷歌搜索和写有趣和绝望的东西(比如汇编字符串中的#include :-))但没有任何帮助。你有什么想法如何解决这个问题吗?

我们正在使用 GCC 并为 MIPS 编译(在模拟器中运行 :-))

编辑: SAVE_REGISTERS.macro SAVE_REGISTERS... 定义。它不能在 C 宏中,因为它在其他汇编模块中使用。我不能用它制作 .S 文件,因为恐慌必须是可变的。或者至少我想不出任何其他方法来做到这一点。

0 投票
7 回答
2299 浏览

gcc - GCC:内联汇编——适合吗?

所以我刚刚发现 GCC 可以进行内联汇编,我想知道两件事:

  1. 能够内联汇编有什么好处?

  2. 是否可以使用 GCC 作为汇编编译器/汇编器来学习汇编?

我找到了几篇文章,但它们都是旧的,2000 年和 2001 年,不太确定它们的相关性。

谢谢

0 投票
3 回答
2646 浏览

c - 内联汇编器:可以使用哪些暂存器?

在使用类 C 语言将内联汇编器插入函数时,关于允许将哪些寄存器用于临时的约定是什么?asm在进入块之前保存它需要保存的所有寄存器的值是编译器的责任吗?程序员是否有责任将这些寄存器中的值存储在某个地方并在退出asm块之前恢复它们?是否有一个典型的约定,或者这是非常特定于实现的?

0 投票
3 回答
2650 浏览

c - C 内联汇编内存拷贝

我正在尝试将一些内联程序集写入C。我有两个数组作为输入,我需要将array1中的一个元素复制到array2中,以下是我目前拥有的:

为什么会出现分段错误?

0 投票
1 回答
667 浏览

pascal - 如何在 gnu pascal 中编写内联汇编?

由于没有官方参考,我只有一个教程 gpcasm.zip。但是当我尝试按照 tut 在我的 debian 上尝试内联汇编示例时。gpc 对此并不满意。

这是代码

另一个问题,是否还有其他关于 gnu pascal 中的内联汇编的参考、教程和示例。

谢谢。

0 投票
2 回答
1722 浏览

c - GCC 内联汇编代码中的 %c 是什么意思?

我试图理解这个来自_hypercall0 这里的内联汇编代码。

我无法找到有关%c第一行含义的信息。我没有在GCC 手册最明显的部分找到任何信息,该部分解释了%[name],但没有%c[name]。还有其他地方我应该看看吗?

0 投票
1 回答
5283 浏览

assembly - gcc 内联汇编中的 ljmp 语法

我正在考虑使用远跳转来设置代码段(CS)寄存器。了解我为什么要这样做以及我为什么要处理细分需要一段时间,所以请耐心等待,并将其视为学术练习。我似乎无法正确使用语法。

Error: suffix or operands invalid for 'ljmp'

我知道cs放入另一个寄存器是愚蠢的,但我想我会尝试它,因为 using%0不起作用(ax寄存器也不起作用)。

我正在查看一些编译良好的代码,这让我发疯,因为我认为ljmp会是一样的:__asm volatile ( "lcall $0x8, $far_call" );

我当然欢迎其他影响 CS 寄存器的 hacky 方式。