c++ - VS 在程序集操作码中嵌入字符串

标签 c++ c visual-studio assembly

我正在尝试在 visual studio 中用汇编编写一个 hello world 程序。我想在这样的指令之间将字符串保存为操作码

call label1
    "hello world"
label1:
    pop esi
    push esi
    call print

我如何在 Visual Studio 中执行此操作?

最佳答案

通过内联汇编,您可以使用 _emit 伪指令,如下所示(此处用于 32 位代码):

auto foo()
    -> char const*
{
    __asm
    {
        mov eax, offset my_data
        jmp epilogue
    my_data:
        _emit 'H'
        _emit 'e'
        _emit 'l'
        _emit 'l'
        _emit 'o'
        _emit '!'
        _emit 0
    }
    epilogue: ;
}

#include <iostream>
using namespace std;
auto main() -> int
{
    wcout << foo() << endl;
}

我不知道有什么方法可以使用内联汇编将字符串写成字符串。

我建议改用适当的完整汇编器。如果您使用的是 Visual Studio,那么您已经安装了它,它是 ml.exe

关于c++ - VS 在程序集操作码中嵌入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31766225/

相关文章:

c++ - 是否有任何具有非 IEEE C/C++ 浮点格式的现代平台?

c++ - Boost ASIO - 如何编写控制台服务器 2

c - 分配给作为结构成员的指针会导致段错误

.net - 无法在 XP Sp3 上找到运行此应用程序 .net 4.0 的运行时版本

visual-studio - Visual C++ 无法解析的外部符号 _Direct3DCreate9@4

jquery - 找不到 'jquery' 的类型定义文件

c++ - Opencv 在运行一个简单的程序时抛出一个奇怪的错误

c++ - void({}) 中的 {} 是什么?

c++ - C(或 C++?)语法 : STRUCTTYPE varname = {0};

c - 如何通过指向结构的指针数组访问结构的成员