【发布时间】:2013-11-29 19:21:00
【问题描述】:
我正在编写 C++ 和外部 asm 代码。我们需要使用外部 ASM 库。问题是,我很难将字符串从 c++ 端传递给 asm。我确定我在访问 asm 端的字符串时犯了一些错误。
我基本上是逐字阅读文本文件。然后我想将每个单词传递到 ASM 端并对其进行一些统计处理。
假设我从文件中检索了一个单词并将其存储在
string wordFromFile = "America";
processWord(wordFromFile, wordFromFile.size()) //processFromWord is the ASM side function
;;ASM SIDE
;;The doubt I have (first of all all) is how do I declare the arguments on the ASM SIDE
ProcessWordUpperCase PROC C, wordFile :BYTE, len :DWORD
OR
ProcessWordUpperCase PROC C, buffer :DWORD, len :DWORD
我该怎么办?还有一件事,在函数中,我将按每个字母访问字符串。您对此有何建议?
【问题讨论】:
-
澄清一下 - 您使用 MSVC++ 作为 C++ 编译器,使用 MASM 作为汇编程序?另外,这是 x86 还是 x64 程序集?
-
我怀疑你能否在汇编程序中使用
stringobject 做任何有用的事情。如果有的话,您应该使用c_str传递指针,但是您必须记住它是一个 constant 指针(因此您不能修改字符串)并且该指针也是临时的。 -
MSVC++、MASM 和 x86
标签: c++ string pointers assembly