如何编写与此程序集代码相等的c/c++代码
how do write c/c++ code that equal this assembly code?
MSVC,在c++11、/O1或/O2 之前
喜欢memcpy(p,"11111 2244551",n(;
但"11111 2244551"是立即值,不在"rdata"部分。
程序集代码:eax指向堆内存区域,而不是堆栈内存
mov [eax+10h], 30303030h
mov [eax+14h], 31323334h
mov [eax+18h], 35353535h
mov [eax+1ch], 3334h
如何编写c/c++代码?请
不要:
p[0]=xx;p[1]=xx;p[n]=xx。。。
-
-
附加(来自IDA(:
mov dword ptr [eax+10h], 41424344h
mov dword ptr [eax+14h], 45464748h
mov word ptr [eax+18h], 65h
我想要c/c++代码。
如何编写与此机器代码相等的c/c++代码?
通常情况下,您不能
C++11(或C11(的语义,如它们各自的标准(n3337表示C++11,n1570表示C11(所定义的,比x86-64机器代码(或汇编程序(的语义具有更高的级别。您可以要求C++(或C(代码的可观察行为与您的汇编代码类似(但这是另一个问题(。
注意可能的编译器优化、序列点、未定义的行为、反编译器(它们解决了一个棘手或不可确定的问题,可证明相当于停止问题(、代码混淆和好像规则。还可以阅读有关静态源代码分析、恶意软件分析和Rice定理的内容。
你可能会问(但这是一个非常不同的问题(如何让某个特定的编译器(版本和优化细节当然很重要(生成一段特定的代码。一般来说,没有答案(当然asm
指令除外,其解释和语义不是由标准定义的,而是由特定的编译器或C或C++实现定义的(。
请注意,编程语言是一种规范,而不是一种软件。
(所以你很困惑,严格意义上你的问题没有意义,所以不清楚(。
请注意,您的汇编程序代码可能是用您认为已使用的编译器生成的。例如,后处理器可能在链接器之前"转换"汇编程序代码(并且仍然保留原始的C或C++语义(。
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 此代码是否违反一个定义规则
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 为什么在这个代码结束循环中没有得到结束
- 在c代码之间共享数据的最佳方式
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值