954,479 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Conversion from C++ to MIPS Assembly

Hey everyone,

I've been getting my rear end kicked by this homework assignment. We were given the task of writing up a command line version of Othello (Reversi) in a higher level language, which I chose C++ to do so in. My C++ version of the code is working great, however, I can't seem to get off the ground in MIPS. I was wondering if anyone knew a good way to convert the C++ code to MIPS. I'm currently on a Windows box, using Bloodshed IDE for my C++ code, but I also picked up Microsoft Visual C++ 2008 Express Edition today to give it a try and see if there was something in there to help convert the code. I've also got access to some Fedora Core 7 computers in the computer lab, with a lot of different things on there. Any help would be appreciated. I've also put a copy of this in the C++ forum, hopefully this is ok.

therealsolitare
Newbie Poster
8 posts since Dec 2007
Reputation Points: 10
Solved Threads: 0
 

VC++ 2005 Express can produce the assembly code for you but it won't produce assembly code for the standard c and c++ library functions that your program calls. Unless your teacher lets you link with standard C or C++ libraries, which I doubt, you wil have to write those functions yourself.

Ancient Dragon
Retired & Loving It
Team Colleague
30,049 posts since Aug 2005
Reputation Points: 5,662
Solved Threads: 2,343
 

Where is that functionality located in Express? I poked around in different menus and was unable to find it, although the documentation that I was looking at was not very helpful.

therealsolitare
Newbie Poster
8 posts since Dec 2007
Reputation Points: 10
Solved Threads: 0
 

Project --> Properties (the last item in the menu) --> Configuration Properties --> C/C++ -> Output Files --> then on the right side of the screen you will see Assembly Output

Ancient Dragon
Retired & Loving It
Team Colleague
30,049 posts since Aug 2005
Reputation Points: 5,662
Solved Threads: 2,343
 

Ahh, I wouldn't have thought to look in the output files. Thank you so much!

therealsolitare
Newbie Poster
8 posts since Dec 2007
Reputation Points: 10
Solved Threads: 0
 

One more quick question - is the assembly code outputted MIPS? I took a look at it, and it seemed to be quite a bit different, but it might be that it is using functions that I've not encountered yet.

therealsolitare
Newbie Poster
8 posts since Dec 2007
Reputation Points: 10
Solved Threads: 0
 

>>is the assembly code outputted MIPS
No. Its Intell 80X88, you will have to translate it to MIPS.

You can get free eVC++ 4.0 which is for embedded WinCE and PocketPC devices which can produe MIPS assembly. Depending on your program that compiler may or may not be able to compile it.

Ancient Dragon
Retired & Loving It
Team Colleague
30,049 posts since Aug 2005
Reputation Points: 5,662
Solved Threads: 2,343
 

I got some hints on how to convert the program from C++ to the Intel 80X88 Assembly code, so if someone knows a good, fairly quick way of converting that into MIPS, that would also be great. I still think that C++ directly to MIPS would be a little faster, but whichever way gets the job done gets the job done.

therealsolitare
Newbie Poster
8 posts since Dec 2007
Reputation Points: 10
Solved Threads: 0
 

I was trying to install eVC++ earlier today and I got a funky error when I was doing so (on the install of the Platform Manager). I'll try that again, however, and see if I can find out more information about the error I was getting.

therealsolitare
Newbie Poster
8 posts since Dec 2007
Reputation Points: 10
Solved Threads: 0
 

If your assignment was to do it in a high level language then why play with assembly?

The fastest way to convert would be to tell the compiler to produces assembly source instead of a binary image. If you are using the GCC:
g++ -S -fverbose-asm foo.cpp
Other compilers will vary.

BTW. Good luck. C++ is pretty darn high level.

Duoas
Postaholic
2,043 posts since Oct 2007
Reputation Points: 1,140
Solved Threads: 229
 

Also posted here - http://www.daniweb.com/forums/thread99216.html
Try not to cross-post.

Salem
Posting Sage
Team Colleague
11,531 posts since Dec 2005
Reputation Points: 5,862
Solved Threads: 953
 

I've got eVC++ 4.0 installed, along with the most recent service pack, however, (and I'm not sure if this is just isolated to my machine) it will not build any projects, as it says I need to select a platform, although there is no place on the project menu to select a platform.

therealsolitare
Newbie Poster
8 posts since Dec 2007
Reputation Points: 10
Solved Threads: 0
 

If your assignment was to do it in a high level language then why play with assembly?

The fastest way to convert would be to tell the compiler to produces assembly source instead of a binary image. If you are using the GCC: g++ -S -fverbose-asm foo.cpp Other compilers will vary.

BTW. Good luck. C++ is pretty darn high level.

This is not MIPS, I am just curious on what it is, thanks...

ibaraku
Newbie Poster
1 post since Oct 2008
Reputation Points: 10
Solved Threads: 0
 

i have attach the files above.. do anyone can convert this C++ file to assembly language

Attachments Mastermind_-_Computerplayer.CPP (3.56KB)
galaxian
Newbie Poster
1 post since May 2009
Reputation Points: 10
Solved Threads: 0
 

Apart from hijacking a dead thread, what's your question?
Find a compiler which targets the ASM you want, and follow the instructions earlier in the thread.

Salem
Posting Sage
Team Colleague
11,531 posts since Dec 2005
Reputation Points: 5,862
Solved Threads: 953
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You