我正在使用Visual Studio 2010并假设我必须编写一些程序。我可以这样使Visual Studio向我展示这个代码翻译成汇编语言吗?
如果是,我该怎么做?例如,我有一个阶乘计划:
int fact(int n) {
if (n<=1)
return 1;
return n*fact(n-1);
答案 0 :(得分:5)
查看this问题的答案:
有几种方法:
- 在Visual中调试C ++时,通常可以看到汇编代码 工作室(也是日食)。为此 Visual Studio在代码上放置了一个断点 问题以及调试器何时命中它 点击并找到“Go To Assembly” (或按CTRL + ALT + D)
- 第二种方法是在编译时生成汇编列表。对于 这转到项目设置 - &gt; C / C ++ - &GT;输出文件 - &gt; ASM列表位置并填写文件名。也选择 “装配输出”到“装配” 源代码“。
- 编译程序并使用任何第三方调试程序。您可以使用 OllyDbg或WinDbg。还有你 可以使用IDA(交互式 反汇编)。但这是硬核 这样做的方式。
醇>
答案 1 :(得分:0)
在你的阶乘函数中加入断点,开始调试,进入调用堆栈窗口,右键单击你的函数,选择Go To Disassembly
答案 2 :(得分:0)
函数.h
struct slot_machine{
int balance=0;
int roll_1=0;
int roll_2=0;
int roll_3=0;
};
void loop();
void printMenu();
void transferFunds();
void spin(slot_machine machine);
void spin(slot_machine machine,int rerolls);
void checkFunds();
void exit();
functions.cpp
#include “functions.h”
#include
#include /* srand, rand */
使用命名空间标准;
char values[]={'a','b','c','d','e','f','g','h','i','k'};
int fund=500;
slot_machine the_machine;
int option=0;
int clean_rolls=5;
void loop(){
while(option!=4){
printMenu();
if(option==1)
checkFunds();
if(option==2)
transferFunds();
if(option==3){
if(clean_rolls>0)
spin(the_machine);
其他
spin(the_machine,40);
clean_rolls–;
}
if(option==4)
退出();
}
}
void printMenu(){
cout cin>>选项; } void spin(slot_machine machine){ cout< machine.roll_1=(rand() % 10); machine.roll_2=(rand() % 10); machine.roll_3=(rand() % 10); if(machine.roll_1==machine.roll_2 && machine.roll_2==machine.roll_3) { cout machine.balance+=30; }其他{ if(machine.roll_1==machine.roll_2 || machine.roll_2==machine.roll_3 ||machine.roll_1==machine.roll_2 && machine.roll_1==machine.roll_3){ cout machine.balance+=1; }其他{ cout machine.balance-=1; } } } void spin(slot_machine machine, int rerolls){ cout< machine.roll_1=(rand() % 10); machine.roll_2=(rand() % 10); machine.roll_3=(rand() % 10); while((machine.roll_1==machine.roll_2 && machine.roll_2==machine.roll_3) && (machine.roll_1==machine.roll_2 || machine.roll_2==machine.roll_3 ||machine.roll_1==machine.roll_2 && machine.roll_1==machine.roll_3) && rerolls>0){ machine.roll_1=(rand() % 10); machine.roll_2=(rand() % 10); machine.roll_3=(rand() % 10); 重投–; } if(machine.roll_1==machine.roll_2 && machine.roll_2==machine.roll_3) { cout machine.balance+=30; }其他{ if(machine.roll_1==machine.roll_2 || machine.roll_2==machine.roll_3 ||machine.roll_1==machine.roll_2 && machine.roll_1==machine.roll_3){ cout machine.balance+=1; }其他{ cout machine.balance-=1; 返回; } } } void transferFunds() { int toTransfer=0; cout cin>>toTransfer; if(toTransfer>funds) cout<<“资金不足!”< 其他 cout<<“资金转移”< the_machine.balance+=toTransfer; funds-=toTransfer; } void checkFunds(){ cout< } void exit() { cout<<“感谢您的参与!..”< 退出(0); } main.cpp #include #include “functions.h” 使用命名空间标准; int main() { cout << “老虎机程序” << endl; 循环(); 返回0; }