Hi. I learned C in high school and am proficient in it:D. At the college while learning microcontrollers there was a short course on assembly language which I skipped:p but had no trouble as most of the application programming had to be done in C. Should I go back n learn assembly language as I have heard it gives good insight into the hardware?
[I'm confused about the CPU registers and I haven't found any truly clear and coherent explanation of them across the whole internet. If anyone has a link to something useful I'd really appreciate it if you'd post it in a comment or answer.]
The primary reason I'm here now is because I have been looking at sample NASM programs in a [thus far vain] attempt to learn the language.
I'm running on Ubuntu 12.10 64bit.
I am trying to debug a simple assembly program in GDB. However GDB's gui mode (-tui) seems unable to find the source code of my assembly file.
Nearly the entire text of The Art of Assembly Language Programming has been posted online for the Processing Systems and Structures course at Washington University.
Trilby wrote:Gcc compiles C into "plain old assembly", so why would you want to program in C? Cut out the middle man, and write in assembly.Assembly is assembled into plain old binary machine code, so why would you want to program in assembly?Binary machine code is translated at runtime by the processor into high and low voltage states on a series of registers and output lines.
I am learning how Linux works. I have encountered a strange assembly language instruction, jmpi. I can find some explanation at various websites, but strangely I can't find it in assembly language books, including the Intel® 64 and IA-32 Architectures Software Developer’s Manual. I have searched the book, but it doesn't contain the instruction jmpi.
This is hard to word/ask so please bear with me:
When we see the output of assembly, this is what is going to be executed on the core(s) of the CPU. However, if a CPU has multiple cores- is all of the assembly executed on the same core?
While I'm learning x64 assembly, I'm trying to make add method to add two integers and return integer using assembly.
I had the working code with x86 and I tried to convert to x64
simply I changed the registers' names to be that of x64 and the object file generated without errors but when I use it inside my C function I always get sum = 0.
I think there's a problem with the arguments location a
chris_l wrote:The computer processor works in opcodes, and assembly is the direct translation of them. Is not just a language for another tasks; is THE direct translation of the language the processor actually "speaks".Nope. Processors speak electronics. Assembly reveals only one small portion of what's "really" going on.