...
/GDB Disassembly Output – No Optimization
GDB Disassembly Output – No Optimization
Learn how to compile, load, and execute the GDB disassembly program, without code optimization.
Arithmetic example in the C/C++ program
Let’s rewrite our arithmetic program in C/C++. Corresponding assembly language instructions are edited in the comments:
Press + to interact
int a, b;int main(int argc, char* argv[]){// Assign a value to variable aa = 1; // adr x0,a// mov w1, #1// str w1, [x0]// Assign a value to variable bb = 1; // adr x0,b// mov w1, #1// str w1, [x0]// Add b and a and store in variable bb = b + a; // adr x0,b// ldr w1, [x0]// adr x0, a// ldr w0, [x0]// add w1, w1, w0// adr x0, b// str w1, [x0]// Increment variable a by one++a; // adr x0, a// ldr w1, [x0]// add w1, w1, #1// str w1, [x0]// Multiply b with a and store into bb = b * a; // adr x0,b// ldr w1, [x0]// adr x0, a// ldr w0, [x0]// mul w1, w1, w0// adr x0, b// str w1, [x0]// results: [a] = 2 and [b] = 4// Return 0 means it executed successfullyreturn 0;}
The flowchart below shows the working of the source code:
Disassembly in the no-optimization mode
It is easier to track the progress of our program during debugging if we can recompile without optimization.
Note: You can practice all the commands in the coding playground provided at the end of the lesson.
Compilation
If we compile and link the program in the no-optimization mode (default), as shown below, ...
Access this course and 1400+ top-rated courses and projects.