Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

YouTube

RISC-V 32-bit and 64-bit Assembly

OpenSecurityTraining2 via YouTube

Overview

Coursera Flash Sale
40% Off Coursera Plus for 3 Months!
Grab it
Learn RISC-V 32-bit and 64-bit assembly languages through a comprehensive course that teaches assembly programming by compiling C code examples and analyzing the resulting assembly instructions. Master the fundamentals starting with ISA families, endianness, and registers before progressing through essential concepts including the stack, local variables, function calling conventions, and control flow structures. Explore advanced topics such as boolean logic, bit shifting operations, multiplication/division/remainder operations, and inline assembly programming. Practice with hands-on examples covering array and struct manipulation, pointer operations, parameter passing, and optimization techniques at different compiler levels (-O0, -O1). Gain proficiency in debugging assembly code using GDB and analyzing binaries with tools like Ghidra. Understand the critical role of the stack in assembly execution and learn to write your own assembly code. Complete practical exercises including a binary bomb lab walkthrough that reinforces reverse engineering skills and assembly analysis techniques.

Syllabus

Arch1005: RISC-V Assembly 00 01 Class Intro
Arch1005: RISC-V Assembly 00 02 Intro ISA Family
Arch100X Endianness
Arch1005 01 Registers
Arch1005: RISC-V Assembly 02 NOP
Arch1005: RISC-V Assembly 03 01 JustReturn.c -O1
Arch1005: RISC-V Assembly 03 02 The Stack Overview
Arch1005: RISC-V Assembly 03 03 JustReturn (-O0) 1
Arch1005: RISC-V Assembly 03 03 JustReturn (-O0) 2
Arch1005: RISC-V Assembly 03 03 JustReturn (-O0) 3
Arch1005: RISC-V Assembly 03 04 JustReturn.c (-O0) in GDB
Arch1005: RISC-V Assembly 03 05 JustReturn (-O0) Frame Pointers Aside
Arch1005: RISC-V Assembly 03 06 JustReturn (-O0) Compression Digression 1
Arch1005: RISC-V Assembly 03 06 JustReturn (-O0) Compression Digression 2
Arch1005: RISC-V Assembly 03 06 JustReturn (-O0) Compression Digression 3
Arch1005: RISC-V Assembly 03 06 JustReturn (-O0) Compression Digression 4
Arch1005: RISC-V Assembly 04 Local Variables 01 SingleLocalVariable.c 1
Arch1005: RISC-V Assembly 04 Local Variables 01 SingleLocalVariable.c 2
Arch1005: RISC-V Assembly 04 Local Variables 02 MysteryListery2 Solved 1 TwoInts.c 1
Arch1005: RISC-V Assembly 04 Local Variables 02 MysteryListery2 Solved 2 TwoInts.c 2
Arch1005: RISC-V Assembly 04 Local Variables 02 MysteryListery2 Solved 3 TwoLongLongs.c 1
Arch1005: RISC-V Assembly 04 Local Variables 02 MysteryListery2 Solved 4 TwoLongLongs.c 2
Arch1005: RISC-V Assembly 04 Local Variables 02 MysteryListery2 Solved 5 ThreeLongLongs.c 1
Arch1005: RISC-V Assembly 04 Local Variables 02 MysteryListery2 Solved 6 ThreeLongLongs.c 2
Arch1005: RISC-V Assembly 04 Local Variables 02 MysteryListery2 Solved 7 ThreeIntsBonus.c 1
Arch1005: RISC-V Assembly 04 Local Variables 02 MysteryListery2 Solved 8 ThreeIntsBonus.c 2
Arch1005: RISC-V Assembly 04 Local Variables 03 ArrayLocalVariable.c 1
Arch1005: RISC-V Assembly 04 Local Variables 03 ArrayLocalVariable.c 2
Arch1005: RISC-V Assembly 04 Local Variables 04 ArrayLocalVariable2.c 1
Arch1005: RISC-V Assembly 04 Local Variables 04 ArrayLocalVariable2.c 2
Arch1005: RISC-V Assembly 04 Local Variables 05 StructLocalVariable.c 1
Arch1005: RISC-V Assembly 04 Local Variables 05 StructLocalVariable.c 2
Arch1005: RISC-V Assembly 04 Local Variables 05 StructLocalVariable.c 2
Arch1005: RISC-V Assembly 04 Local Variables 06 StructLocalVariable2.c 1
Arch1005: RISC-V Assembly 04 Local Variables 06 StructLocalVariable2.c 2
Arch1005: RISC-V Assembly 04 Local Variables 07 StructLocalVariable2Packed.c
Arch1005: RISC-V Assembly 04 Local Variables 08 PointerLocalVariable.c 1
Arch1005: RISC-V Assembly 04 Local Variables 08 PointerLocalVariable.c 2
Arch1005: RISC-V Assembly 05 Calling Functions 01 Calling Conventions
Arch1005: RISC-V Assembly 05 Calling Functions 02 CallFuncNoArgs.c 1
Arch1005: RISC-V Assembly 05 Calling Functions 02 CallFuncNoArgs.c 2
Arch1005: RISC-V Assembly 05 Calling Functions 03 Call3FuncsNoArgs.c 1
Arch1005: RISC-V Assembly 05 Calling Functions 03 Call3FuncsNoArgs.c 2
Arch1005: RISC-V Assembly 05 Calling Functions 04 CallFunc1Arg.c 1
Arch1005: RISC-V Assembly 05 Calling Functions 04 CallFunc1Arg.c 2
Arch1005: RISC-V Assembly 05 Calling Functions 05 HelloWorld.c 1
Arch1005: RISC-V Assembly 05 Calling Functions 05 HelloWorld.c 2
Arch1005: RISC-V Assembly 05 Calling Functions 05 HelloWorld.c 3
Arch1005: RISC-V Assembly 05 Calling Functions 05 HelloWorld.c 4
Arch1005: RISC-V Assembly 05 Calling Functions 06 LocalVariableByte.c 1
Arch1005: RISC-V Assembly 05 Calling Functions 06 LocalVariableByte.c 2
Arch1005: RISC-V Assembly 05 Calling Functions 07 TooManyParameters.c 1
Arch1005: RISC-V Assembly 05 Calling Functions 07 TooManyParameters.c 2
Arch1005: RISC-V Assembly 06 Boolean Logic 01 BooleanBecause.c 1
Arch1005: RISC-V Assembly 06 Boolean Logic 01 BooleanBecause.c 2
Arch1005: RISC-V Assembly 06 Boolean Logic 02 BooleanBecause2.c 1
Arch1005: RISC-V Assembly 06 Boolean Logic 02 BooleanBecause2.c 2
Arch1005: RISC-V Assembly 07 Control Flow 01 IfExample1.c 1
Arch1005: RISC-V Assembly 07 Control Flow 01 IfExample1.c 2
Arch1005: RISC-V Assembly 07 Control Flow 02 IfExample2.c 1
Arch1005: RISC-V Assembly 07 Control Flow 02 IfExample2.c 2
Arch1005: RISC-V Assembly 07 Control Flow 03 IfExample3.c1
Arch1005: RISC-V Assembly 07 Control Flow 03 IfExample3.c 2
Arch1005: RISC-V Assembly 07 Control Flow 04 IfExample4.c 1
Arch1005: RISC-V Assembly 07 Control Flow 04 IfExample4.c 2
Arch1005: RISC-V Assembly 07 Control Flow 05 SwitchExample.c 1
Arch1005: RISC-V Assembly 07 Control Flow 05 SwitchExample.c 2
Arch1005: RISC-V Assembly 07 Control Flow 06 WhileExample.c & WhileExample2.c
Arch1005: RISC-V Assembly 07 Control Flow 07 ForExample.c
Arch1005: RISC-V Assembly 07 Control Flow 08 GotoExample.c
Arch1005: RISC-V Assembly 08 Shifts 01 ShiftExample1UnsignedLong.c 1
Arch1005: RISC-V Assembly 08 Shifts 01 ShiftExample1UnsignedLong.c 2
Arch1005: RISC-V Assembly 08 Shifts 02 ShiftExample2SignedLong.c 1
Arch1005: RISC-V Assembly 08 Shifts 02 ShiftExample2SignedLong.c 2
Arch1005: RISC-V Assembly 08 Shifts 03 ShiftExample3Opaque.c 1
Arch1005: RISC-V Assembly 08 Shifts 03 ShiftExample3Opaque.c 2
Arch1005: RISC-V Assembly 08 Shifts 04 ShiftExample4Opaque.c 1
Arch1005: RISC-V Assembly 08 Shifts 04 ShiftExample4Opaque.c 2
Arch1005: RISC-V Assembly 08 Shifts 05 ShiftExample5Int.c 1
Arch1005: RISC-V Assembly 08 Shifts 05 ShiftExample5Int.c 2
Arch1005: RISC-V Assembly 08 Shifts 06 ShiftExample6MulDiv.c 1
Arch1005: RISC-V Assembly 08 Shifts 06 ShiftExample6MulDiv.c 2
Arch1005: RISC-V Assembly 08 Shifts 07 ShiftExample7LWU.c 1
Arch1005: RISC-V Assembly 08 Shifts 07 ShiftExample7LWU.c 2
Arch1005: RISC-V Assembly 09 Sets 01 SwitchExample.c 1
Arch1005: RISC-V Assembly 09 Sets 01 SwitchExample.c 2
Arch1005: RISC-V Assembly 09 Sets 02 SetExample1.c 1
Arch1005: RISC-V Assembly 09 Sets 02 SetExample1.c 2
Arch1005: RISC-V Assembly 09 Sets 03 SetExample2.c 1
Arch1005: RISC-V Assembly 09 Sets 03 SetExample2.c 2
Arch1005: RISC-V Assembly 10 Stragglers
Arch1005: RISC-V Assembly 11 MulDivRem 01 Example1MulDivRem.c 1
Arch1005: RISC-V Assembly 11 MulDivRem 01 Example1MulDivRem.c 2
Arch1005: RISC-V Assembly 11 MulDivRem 02 Example2Mul.c 1
Arch1005: RISC-V Assembly 11 MulDivRem 02 Example2Mul.c 2
Arch1005: RISC-V Assembly 11 MulDivRem 02 Example2Mul.c 3
Arch1005: RISC-V Assembly 11 MulDivRem 03 Example3MulDivRem.c 1
Arch1005: RISC-V Assembly 11 MulDivRem 03 Example3MulDivRem.c 2
Arch1005: RISC-V Assembly 11 MulDivRem 04 Example4DivRem.c 1
Arch1005: RISC-V Assembly 11 MulDivRem 04 Example4DivRem.c 2
Arch1005: RISC-V Assembly 11 MulDivRem 05 Example5Mul.c 1
Arch1005: RISC-V Assembly 11 MulDivRem 05 Example5Mul.c 2
Arch1005: RISC-V Assembly 11 MulDivRem 06 Example6Mul.c 1
Arch1005: RISC-V Assembly 11 MulDivRem 06 Example6Mul.c 2
Arch1005: RISC-V Assembly 12 Read The Fun Manual 1
Arch1005: RISC-V Assembly 12 Read The Fun Manual 2
Arch1005: RISC-V Assembly 12 Read The Fun Manual 3
Arch1005: RISC-V Assembly 12 Read The Fun Manual 4
Arch1005: RISC-V Assembly 13 Writing Assembly 01 Intro
Arch1005: RISC-V Assembly 13 Writing Assembly 02 GCC Inline Assembly
Arch1005: RISC-V Assembly 14 Binary Bomb Lab Intro & Phase 1 Walkthrough
Arch1005: RISC-V Assembly 14 Ghidra Connect to Binary Bomb Lab
Arch1005: RISC-V Assembly 17 01 Conclusion

Taught by

OpenSecurityTraining2

Reviews

Start your review of RISC-V 32-bit and 64-bit Assembly

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.