微软的C++编译器和链接器似乎与它有着奇怪的关系mspdb100.dll.当然,从IDE运行时,编译器和链接器工作正常.从命令行运行任何一个时,我收到一个错误.
没问题,我找到了DLL并将其复制到目录中.现在编译器工作正常,但链接器死了.
我可以通过在我的PATH中添加"%VS10%\ Common7\IDE"来解决问题,但由于各种原因(性能,系统纯度,强迫症等),我不想这样做.为什么这个设置如此敏感,我还能做些什么来解决它?
dll dependencies visual-studio-2010 visual-studio visual-c++
好的,所以我知道C++,C#,Java和其他一些语言,我决定接下来学习装配,但我觉得我从一开始就碰到了坚固的砖墙.我只需要有人指出我正确的方向.
以下是问题:
我被告知,从互联网学习装配比从书本学习更好,因为装配取决于你的硬件和书籍大多是过时的.真的吗?
我有一个64位CPU,我正在使用(或至少尝试使用)FASM.我在哪里可以找到必要的文件?
我总是感到困惑,因为我见过的大部分教程都不适合我.那是因为硬件差异吗?我如何找到正确的教程?
我可以在64位计算机上运行x86和x32程序集吗?
能不能请你这么好,给我一个简单的汇编程序(可以在我的电脑上运行),评论中有细分吗?我在我的intel核心i5 CPU上运行64位Windows 10.请.
我发现了很多关于这个影子空间的话题,但我找不到答案,所以我的问题是:
在进入程序之前,我需要从堆栈指针中减去多少字节?
我应该在减去"阴影空间"之前将过程参数推送到堆栈吗?
我已经拆解了我的代码,但我找不到逻辑.
我对组装非常新.我昨天才拿起它,我看了很多例子,但仍然无法弄清楚如何写入控制台.当我似乎以自己的方式复制它时,我总是会遇到错误.
我经常听说使用神灵语言汇编语言编写的应用程序.我从来没有尝试过,我甚至都不知道该怎么做.
如果我想涉猎,我该怎么做呢?我完全不知道需要什么,虽然可能是某种编译器和记事本.
纯粹出于好奇,我需要写一个"Hello World!" 应用?
编辑添加,我正在运行Windows 7 64位
编辑添加,我想知道是否有Visual Studio的汇编语言插件?
我在 Windows 10 上,安装了 Cygwin。我一直在使用 Cygwin 编译/汇编 c 和汇编程序,使用 Cygwin 安装的“gcc”和“nasm”。据我所知,nasm 有一个 -f win64 模式,所以它可以组装 64 位程序。现在,对于 windows 上的 x64 汇编编程,youtube 似乎缺少教程。youtube 上的大多数汇编编程教程都是针对 x64 linux 或 x32 windows 的,我需要能够在 x64 windows 上将字符串打印到控制台,而无需使用任何外部函数,例如 C 的“printf”。
对我不起作用的 StackOverflow 链接:
据我所知,nasm 确实支持使用 -f win64 扩展名的 64 位窗口。此外,答案与如何在 x64 位窗口上以汇编形式编写实际程序无关
如何在Windows下用汇编程序编写hello world?
所有给出代码的答案都只给出了过时的 Windows 版本(32 位)的代码,除了一个。我尝试了适用于 64 位的一个答案,但是链接目标文件的命令给了我一个错误,即系统找不到指定的路径。
该站点不包含任何代码,这正是我所需要的。另外,我正在尝试用 nasm 编写 Hello World 程序。
该问题实际上包含一个 hello world 程序的代码,但是在 Windows 10(我的设备)上的 cygwin 下执行时,我遇到了分段错误。
我想在Windows上编译Hello World NASM示例.
我已将上面的代码粘贴到一个main.asm文件中,并使用以下命令将其编译为obj文件:
nasm -fwin32 .\main.asm -o main.obj
Run Code Online (Sandbox Code Playgroud)
之后我想将这个obj文件编译成一个exe,如下所示:
g++ .\main.obj -o main.exe -m32
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/../lib/gcc/i686-w64-mingw32/8.1.0/../../../../i686-w64-mingw32/lib/../lib/libmingw32.a(lib32_libmingw32_a-crt0_c.o):crt0_c.c:(.text.startup+0x39): undefined reference to `WinMain@16'
Run Code Online (Sandbox Code Playgroud)
我错过了什么?如何修复此错误?
关于如何使用Assembly将字符打印到屏幕上我有点困惑.该架构是x86(linux).可以调用其中一个C函数还是有更简单的方法?我想输出的字符存储在寄存器中.
谢谢!
我想进入汇编程序,特别是 Windows 的汇编程序。我想知道我对编译器有哪些选择,也许还有一些很好的指南,这些指南实际上适用于(在 Windows 和编译器上)基本或 Win32 的东西。
我正在使用32位Windows 7上的NASM以汇编语言编写一个hello world程序.我的代码是:
section .text
global main ;must be declared for linker (ld)
main: ;tells linker entry point
mov edx,len ;message length
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
msg db 'Hello, world!', 0xa ;our dear string
len equ $ - msg ;length of our dear string
Run Code Online (Sandbox Code Playgroud)
我把这个程序保存为hello.asm …