gpt4 book ai didi

c++ - GCC 内联汇编错误 : block assembly operand not recognized

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:34:58 25 4
gpt4 key购买 nike

我在尝试使用-fasm-blocks 参数(它启用Intel 风格 汇编语法)在 MSVC 中工作的内联汇编代码:无法识别 block 汇编操作数已使用但未定义标签“LASM$TYPE” :

typedef struct _MyStruct
{
int data;
//...
}MyStruct;

void testAsm()
{
MyStruct *pMyStruct = new MyStruct(); // Please not that I create an instance of MyStruct here only for the sake of simplicity

_asm
{
mov edi, pMyStruct
add edi, TYPE MyStruct // error: block assembly operand not recognized. label 'LASM$TYPE' used but not defined
//...
};

delete pMyStruct;
}


我该如何解决这个问题?

最佳答案

TYPEMSVC-specific asm 关键字。这里它只是表示 sizeof。我试图在网上找到一些 gcc asm-block 文档,但十分钟后我放弃了。尝试

add edi,sizeof(MyStruct)

和变体。我没有 Apple,所以无法为您试用。

已更新以回答评论中的问题:试试这个:

add edi,__offsetof(MyStruct,MyMember)

如果不起作用,请参阅 "Using the GNU Compiler Collection"用于文档。

关于c++ - GCC 内联汇编错误 : block assembly operand not recognized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6225469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com