inline-assembly 相关问题

嵌入在另一个更高语言的源中的程序集,例如嵌入在C或C ++中的x86程序集。

如果在ASM模板中没有指定输入和输出操作数,那么提供这些操作数有什么意义呢?

我在u-bootarcharmlibsemihosting.c中发现了以下一段代码,它使用了bkpt和其他指令,并提供了输入和输出操作数,即使它们没有在ASM中指定......

回答 1 投票 0

如何找到是哪条指令使我的程序崩溃,出现Illegal Instruction错误?

我在windows上使用Mingw32,试图读取CPU的微码修订版。我得到了一个非法指令的崩溃(通过gdb看到),但我一直无法确定哪条指令是 ...

回答 1 投票 0

128乘法和除法的内在联系

在x86_64中,我知道mul和div opp代码支持128个整数,把下位64位放在rax中,上位放在rdx寄存器中。我一直在寻找一种内在的方法来实现这个功能。

回答 2 投票 2

在x86上实现std::atomic_thread_fence(std::memory_order_seq_cst),而不会产生额外的性能惩罚。

一个后续问题,为什么这个`std::atomic_thread_fence`能用,作为一个虚拟的联锁操作比_mm_mfence要好,而且实现的方法也不少,哪个联锁 ...

回答 1 投票 1

编译器设计中的内联装配

我正在为我自己的类C语言(x86-64)制作自己的编译器。但我很困惑,如何编译另一种语言的片段,即x86-64汇编,如:int main() { ...。

回答 1 投票 2

x86_64汇编器的gcc错误(操作码0x83 cmp m64 / imm8)

[当我尝试编译int main(void){__asm __(“ cmp $ 0x1,0x555557e20b58”);返回0; }我得到main.cpp:汇编程序消息:main.cpp:6:错误:'cmp'的操作数类型不匹配...

回答 1 投票 1

使用__builtin_extract_return_addr()函数查找ret指令的RSP值

我最近一直在尝试使用此处描述的__builtin_extract_return_addr函数(https://gcc.gnu.org/onlinedocs/gcc/Return-Address.html)来获取RSP指针的编码值。我...

回答 1 投票 0

D7:使用asm 32位stdcall调用proc后读取var参数

您好,使用下面的代码通过asm调用函数,并在调用后读取结果。很好现在,-如何读取参数会发生变化,最好的问候//推送参数:对于i:= lst.cnt ...

回答 2 投票 0

使用字符指针读取GCC中的寄存器

我最近开始学习如何在C代码中使用内联汇编,并遇到了一个有趣的功能,您可以在其中指定局部变量的寄存器(https://gcc.gnu.org/onlinedocs/gcc / ...

回答 1 投票 0

C ++中间函数钩子覆盖原始局部变量

我写了一个中间函数钩子,我注意到函数的原始局部变量被我在函数中声明的变量所覆盖。这是我的代码:DWORD jbPlantTrap = ...

回答 1 投票 0

x86_64内联汇编;直接将64位寄存器复制到64位存储器位置

我正在运行下面的代码,并遇到两个问题:1)当我将movl(从寄存器中复制值)更改为movq时,我遇到gcc错误:错误:movq的操作数大小不匹配。在...

回答 1 投票 0

我如何让GCC在ah / bh / ch / dh中放置一个字符?

假设我有一些内联程序集,需要使用ah,bh,ch或dh中的特定char值。我怎样才能告诉海湾合作委员会把它放在那里?我没有看到相关的限制,但是GCC手册中说“ ...

回答 1 投票 8

Char数组似乎在覆盖其他数据

所以我在这里还有另一段代码利用了我先前编写的printchar函数:void prints(char input [],int length){for(int i = 1; i <= length; i ++){printchar(input [一世]); }} ...

回答 2 投票 0

mov的无效指令后缀?

我有这段内联汇编代码,应该以文本模式打印4:void print(){asm volatile(“ mov ax,0xb800 \ n”“ mov ds,ax \ n” / *

回答 1 投票 0

从内联汇编中正确收集返回值

我想使用内联汇编在PowerPC 32位体系结构上执行系统调用。执行系统调用后,我还想通过获取r3和...的值来返回系统调用的返回值。...

回答 1 投票 0

RISC-V寄存器在系统调用期间被替换

内联汇编系统调用的浮点返回值被编译器意外保存,然后在调用后恢复。内联float fsyscallf(long n,float farg0){register ...

回答 1 投票 0

比较结构char数组和汇编中的char指针

我正在尝试将列表中第一个结构的第一个字符与汇编中标记的第一个字符进行比较。但是,由于某些原因,两个字符永远不会相等。我知道第一个字符...

回答 1 投票 0

从Visual C ++中的嵌入式程序集访问类成员

[这里是我的代码:void Graph :: PutPixel(DWORD x,DWORD y,DWORD c){__asm {Mov Eax,y Mov Ebx,_width Mul Ebx Add Eax,x Shl Eax,2 //乘以...

回答 3 投票 6

VC ++中的内联汇编代码::在对WaitForSingleObject的系统调用中需要帮助

我已经使用VC ++在VS2019中进行了编码,并使用了Intel C ++编译器进行了编译,这是一个64位命令行音乐文件播放器,可以使用WASAPI播放WAV文件。操作系统是Win 7-SP1。这是......>

回答 1 投票 0

使用x86汇编的数组中的元素总和

我正在尝试将和存储在edx寄存器中,但是输出显示为0。如何解决此问题? int main(){float price [] = {22.1,34.44,567.33,2.45};浮点数= 0; ...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.