带有X64汇编语言的Univeral Windows平台C

Univeral Windows Platform C++ with x64 assembly language

本文关键字:Windows 平台 Univeral X64 汇编语言 带有      更新时间:2023-10-16

我正在寻找Windows 10上的C 和汇编语言。物联网核心。

该项目通常具有大量的C 代码和一些汇编语言代码,但请参阅我将看到它的去向。为什么要使用组装?纯粹是为了娱乐。整个项目都是回到C 和组装的爱好。

UWP C 似乎是最新的方法,即Microsoft编程技术。仍然支持Windows桌面C (即Win32或Console),但我宁愿坚持使用UWP。

我已经快速阅读了UWP C ,Lear不是XAML上的基础知识,而C 正在回到我身边(我几年没有触摸过它)。

使用Visual Studio Professional(引擎盖下的MASM)和X64 ASM。

我有一个简单的Hello World应用程序。文本框和一个按钮。该项目包括一个.ASM文件,其中包含一个简单的函数,该功能添加了两个数字并将结果返回RAX中。此(ASM)函数在按钮单击事件中调用,并输出到文本框文本。

mainpage.xaml.cpp

 extern "C" int SomeFunction();
 void LearningUWPwithCPP::MainPage::Button_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
 {
    greetingOutput->Text = SomeFunction().ToString();
 }

mainpage.xaml

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <StackPanel x:Name="contentPanel" Margin="120,30,0,0">
        <TextBlock HorizontalAlignment="Left" Text="Hello World" FontSize="36"/>
        <TextBlock Text="Click the button"/>
        <Button x:Name="inputButton" Content="Click me" Click="Button_Click"/>
        <TextBlock x:Name="greetingOutput"/>
    </StackPanel>
</Grid>

testasm.asm

    .CODE
    SomeFunction PROC
            mov     rax, 5
            add     rax, 6
            ret
    SomeFunction ENDP
            END

更多信息...

  • 项目构建依赖项已检查MASM选项(即ON)。
  • UWP C 将其编译到本机代码,因此应接受ASM文件
  • 不幸的是,关于UWP和ASM的信息似乎不存在(这里不足为奇)

问题:我得到了"未解决的外部"错误

有用的提示

  • Intellisense正在暗示找不到我(ASM)函数的Extern声明的功能定义。
  • 我可以在ASM文件中键入任何垃圾,该项目将成功编译。

使用这些要点,很明显该项目找不到我的ASM文件。我不确定如何包含ASM文件。我怀疑Extern是Win32 C 日的残余,也许在UWP中无法使用。

任何帮助都非常感谢。

取决于您执行的操作的顺序,vs解决方案资源管理器中的ASM文件的某些属性可能会被错误地设置。

通用解决方案包括从解决方案资源管理器中删除/重新添加ASM文件,或者手动将Excluded from Build设置为 no Item Type Microsoft Macro Macro Assembler 于每种构建配置。