//Course: CPSC240
//Assignment: Example of an X86-64 program called by a C driver.
//Due: 2011-Feb-7
//File: triangle64.c
//Purpose: Demonstrate use of C subprograms printf and scanf for IO actions.
//
//Data passing from the X86-64 program to the C subprograms follows the standard 64-bit calling
//convention. In this case the program was tested successfully on a 64-bit machine Ubuntu platform.
//
//
//Compile only: gcc -c -Wall -m64 -std=c99 -l triangle.lis -o triangle.o triangle.c
//Link only: gcc -m64 -o triangle.out perimeter.o triangle.o
//Execute in 64-bit protected mode: ./triangle.out
//
//
#include <stdio.h>
#include <stdint.h> //For C99.
//C99 is presently the newest standard for C-language. Most modern C-compilers conform to the C99
//standard. The GNU compiler known as gcc is C99 compliant. Assembly languages then must be C99
//compliant in order for the assembly object files to be linked to C object files.
//Traditional prototype follows.
extern unsigned long int computeperimeter();
int main()
{
int x = 32;
int* p = &x;
x = p;
}
Ly9Db3Vyc2U6IENQU0MyNDAKLy9Bc3NpZ25tZW50OiBFeGFtcGxlIG9mIGFuIFg4Ni02NCBwcm9ncmFtIGNhbGxlZCBieSBhIEMgZHJpdmVyLgovL0R1ZTogMjAxMS1GZWItNwovL0ZpbGU6IHRyaWFuZ2xlNjQuYwovL1B1cnBvc2U6IERlbW9uc3RyYXRlIHVzZSBvZiBDIHN1YnByb2dyYW1zIHByaW50ZiBhbmQgc2NhbmYgZm9yIElPIGFjdGlvbnMuCi8vCi8vRGF0YSBwYXNzaW5nIGZyb20gdGhlIFg4Ni02NCBwcm9ncmFtIHRvIHRoZSBDIHN1YnByb2dyYW1zIGZvbGxvd3MgdGhlIHN0YW5kYXJkIDY0LWJpdCBjYWxsaW5nCi8vY29udmVudGlvbi4gIEluIHRoaXMgY2FzZSB0aGUgcHJvZ3JhbSB3YXMgdGVzdGVkIHN1Y2Nlc3NmdWxseSBvbiBhIDY0LWJpdCBtYWNoaW5lIFVidW50dSBwbGF0Zm9ybS4KLy8KLy8KLy9Db21waWxlIG9ubHk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NjIC1jIC1XYWxsIC1tNjQgLXN0ZD1jOTkgLWwgdHJpYW5nbGUubGlzIC1vIHRyaWFuZ2xlLm8gdHJpYW5nbGUuYwovL0xpbmsgb25seTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2MgLW02NCAtbyB0cmlhbmdsZS5vdXQgcGVyaW1ldGVyLm8gdHJpYW5nbGUubwovL0V4ZWN1dGUgaW4gNjQtYml0IHByb3RlY3RlZCBtb2RlOiAgICAgICAuL3RyaWFuZ2xlLm91dAovLwovLwojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGludC5oPiAvL0ZvciBDOTkuICAKLy9DOTkgaXMgcHJlc2VudGx5IHRoZSBuZXdlc3Qgc3RhbmRhcmQgZm9yIEMtbGFuZ3VhZ2UuICBNb3N0IG1vZGVybiBDLWNvbXBpbGVycyBjb25mb3JtIHRvIHRoZSBDOTkKLy9zdGFuZGFyZC4gIFRoZSBHTlUgY29tcGlsZXIga25vd24gYXMgZ2NjIGlzIEM5OSBjb21wbGlhbnQuICBBc3NlbWJseSBsYW5ndWFnZXMgdGhlbiBtdXN0IGJlIEM5OSAKLy9jb21wbGlhbnQgaW4gb3JkZXIgZm9yIHRoZSBhc3NlbWJseSBvYmplY3QgZmlsZXMgdG8gYmUgbGlua2VkIHRvIEMgb2JqZWN0IGZpbGVzLgoKLy9UcmFkaXRpb25hbCBwcm90b3R5cGUgZm9sbG93cy4KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IGNvbXB1dGVwZXJpbWV0ZXIoKTsKCmludCBtYWluKCkKewogIGludCB4ID0gMzI7CiAgaW50KiBwID0gJng7CiAgeCA9IHA7CiAgcHJpbnRmKCIleCIsIHgpOwp9Cg==