Computers Have THUMBS and You Didn't Even Notice

preview_player
Показать описание
Thumb mode is a mode of the ARM processor that uses less power and runs smaller code: in this video we figure out why and how to use it! Learn how to use Thumb mode in ARM assembly. Dive down the rabbit hole with me on how to reduce the size of your ARM programs.

Timestamps:
0:00 Intro
0:07 What is THUMB mode?
0:47 Who cares?
1:35 How do you enter THUMB mode?
2:26 Lets Code!
6:31 Outro
Рекомендации по теме
Комментарии
Автор

This is truly brilliant how you take the time to break this down. I teach RE on C in ARM 64 and ARM 32 and I rarely see such good coverage of ARM well done!

mytechnotalent
Автор

Just found your channel through another video. I have already learned how to enter thumb mode for the purpose of more efficient programs on the Nintendo GBA. The YouTuber ChibiAkumas has several videos on ARM assembly as well. Just for a computer/game system angle. Subbed for more Pi Pico and Assembly videos. I like lower-level programming over those generic Python and other programming tutorial videos YouTube wants to recommend me.

dragonofmissingno
Автор

i wish you were around when i was learning arm assembly in undergrad!

kurtttttttt
Автор

I have two questions. What exactly does branch exchange do? And can you write thumb for aarch64 or is that not supported, are the only two modes aarch64 and aarch32?

pokemettilp
Автор

Wow I wish I would have found this channel earlier!
Thanks man!

hugoboyce
Автор

how did you run the programs without qemu-arm.

ruditook
Автор

1:58 Once the CPU performs the jump, is PC odd or even? Does it actually start executing at an odd address?

williamdrum
Автор

When I run my binary I got an error : -bash: ./001.elf: cannot execute binary file: Exec format error

MDarkus
Автор

Cool !
But question here, in Thumb mode any conditional instruction (except conditional branch instructions ) need to be in a IT block ( if then block ), am i right ?

for example

it eq
moveq r0, r1

jasonlin
Автор

Cool. Now, let's say you would want to do that from the comfort of C, how would one tell the compiler?
Asking for a friend.

eFeXuy
Автор

Would it be cleaner to jump/unconditional branch to the thumb address (+1) during assemble time rather than compute it at runtime? And than same to switch back (masking out the lsb, if needed). That way you're not eating up all the saved bytes with mode swapping instructions.

I'm kind of surprised the assembler doesn't emit a warning (or even an error) if you switch between modes and don't modify the instruction pointer in some way immediately before the transition.

triularity
Автор

What type of computer are you using? Where did you get that? And what OS is you running under?

danielmagnus
Автор

4:59 that was so funny to me I literally fell out of my chair

JGHFunRun
Автор

That's like the Great Architect from Happy Three Friends.

LambdaJack
Автор

Can you make a arm32/aarch32 tutorial?

sebscripts
Автор

When I run my binary I got an error : -bash: ./001.elf: cannot execute binary file: Exec format error

lostulutz