Question: Implement a function in ARM assembler (factorial.s) to calculate the factorial of any number up to 100. Provide a main function driver written in C

Implement a function in ARM assembler (factorial.s) to calculate the factorial of any number up to 100. Provide a main function driver written in C to call your assembler function.

Example function call:

printf("The factorial = ", factorial(100));

Since the factorial of a number larger than 15 is too large to be stored as an int in C, you will need to implement a linked list in assembler. Use the example C code we wrote in class on Monday to calculate a large factorial as a guide if you need to.

Here is the C code as well.

#include <stdio.h>

#include <stdlib.h>

struct Node* factorial(int n);

struct Node

{

int data;

struct Node *next;

};

int main(int argc, char const *argv[])

{

struct Node product;

product = factorial(30);

printf("factorial is: %d",product->data);

free();

return 0;

}

struct Node* factorial(int n){

struct Node *lead, *lag, product;

product ->data = n;

lag->data = n;

lead = lag;

while(n != 1){

lead->next = malloc(sizeof(struct Node));

product->data *= lead->data;

lead = lead->next;

lead->data = --n;

}

lead->next = NULL;

return product;

}

Step by Step Solution

3.33 Rating (165 Votes )

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock

To implement the ARM assembler function and a C main function as described lets follow these steps The core concept here is to handle large factorials ... View full answer

blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!