Programming :: X86 Syntax - Understanding Assembly Instruction
Jan 6, 2011
I'm reading "Understanding the Linux Kernel" and came upon this assembly instruction:
movl $(__KERNEL_CS << 16), %eax
I am curious as to what "<<" means/does. I tried to gooogle, but google doesn't search for "<<".
Could you please explain the relationship between the languages?For one, is C writing assembly when you compile, does every piece of code end up assembly/hex? Is there a way to convert (?port?) between them?I don't understand much at all of them yet, but I've seen examples where it looks like they are interacting, and an understanding of all of them looks to be important?
i wanna use chmod() in linux x86 [debian 3.7.2 x86] but i have some problem in function argv
look at this function: Code: Select all int chmod(const char *path, mode_t mode);
and mode_t modes: Code: Select all S_ISUID (04000) set-user-ID (set process effective user ID on execve(2))
S_ISGID (02000) set-group-ID (set process effective group ID on execve(2); mandatory locking, as described in fcntl(2); take a new file's group from parent direcق tory, as described in chown(2) and mkdir(2))
[code]...
i know there is some problem in ecx and mode_t value/
I've been converting some C code to assembly for my homework; it was going well but I'm having trouble with a for loop for hours. I could not understand where is the problem and decided to ask. I'm posting the part where I'm having trouble of my C-code and assembly-code; every other part of codes act same and the variable values are same. I'm waiting this two codes to act same, but they don't.
All I want to do is fade some text in and out via the opacity attribute, and change the text when it hits zero. My script changes the text on time, but ignores the formatting effects. I'm not worried at this stage about the else statement in the startFadeEffect() function. I just want the fade effect to work here the way it should.
if the address of stWndClass is 403000h, WHY it would be compile as mov eax,[esi+403004] and the first one would be mov eax,[esi+4]? I know how to get the values 403004h and 4,but do not know why.
I have read where C is first converted to Assembly before its final compilation to binary. Is there a way to do this with Bash commands? I would like the understanding that Assembly allows to Bash somehow.
I am trying to learn assembly using nasm as assembler. I did not found example related to string operation. I had following example code,
global asm_strlen section .data section .bss section .text
[code].....
my problem is at highlighted line, I am not getting how to copy a byte into 4 byte reg. rather what is syntax of mov instruction to mov byte to WORD DWORD etc.
1) Is there a dedicated forum on the net for people writing Linux drivers?
2) I've been reading over how Linux drivers are put together and even made my own dummy driver. However, before I begin writing the "real" driver I set out to write, I would like someone with some driver writing experience to verify that my knowledge is correct.
The driver I intend to write is for a PCI card. The very first thing I need is to know is the vendor ID and device ID of the card. After having that information, I can then use the pci_register_driver command to open a connection to the card. At this point, I need to use the pci_*_config_* commands (an example of a pci_*_config_* command is pci_read_config_byte) to figure out where the device is mapped in memory and what I/O ports I need. Now, the pci_* breed of commands take a parameter integer (which is an address) as there second argument. The address(es) which I will use and what they accomplish is device dependent. At this point, after having otained the I/O ports I need, I can then begin writing to them via the inb, outb, etc commands. Writing to X port will have Y result but this is vendor specific.
I have been reading some books about device driver development etc.I made a char driver of bond (dummy) device. My book says that PCI devices contain three addressable regions,configuration space,IO ports,and device memory,the book talks about a file include/linux/pci_ids.h and PCI addressing etc.I read about following functions
1) pci_read_config_ 2) pci_write_config_ some thing known as offset is defined to be passed on as an argument to above functions
3) IRQ number assigned to a card function pci_read_config_byte_,configuration register offsets
4) pci_request_region I want to write a pci driver for my own understanding and I am reading some books about it.
As part of my job I often have to write queries in Oracle (10g) and I am experienced enough to see where I should be using an index where possible etc. Most of the time I just let the CBO come up with the best plan however sometimes it obviously doesn't!Now, I know in general that full scans of large tables aren't good however I don't fully understand an execution plan - ie, I could not look at a complex piece of code, look at it's plan and say "oh, the reason that is performing badly there is because the SBO has chosen to use nested loops rather than a hash join, so if I hint it then it will run quicker!" - this ultimately is where I'm trying to get to
I have been doing programming since the last 5 years. however, i have used to cut and paste the template without knowing in depth since i am chasing the time to finish a certain project. The title above seems easy if we read the manual, its just that im kinda confuse just for a second. Hope you guys can help me to give a better understanding for me so that i can upgrade my knowledge.Well, during my normal practice cut and paste, i try to understand this code below :-
Code: pid_t pid; pid=fork(); if (pid < 0) {perror("Erro spawning process : "); exit(EXIT_FAILURE);}
I was following a simple tutorial on how to program and compile a hello world program using assembly when I got this error;Quote:ld: i386 architecture of input file `hello.o' is incompatible with i386:x86-64 output.The tutorial told me to make two files;Quote:hello.asmsection .data;section declaration
msg db "Hello, world!",0xa;our dear string len equ $ - msg ;length of our dear string section .text;section declaration
When ever i open vim, i get the error that the following error: E484: Can't open file/abcd/configFiles/vim/syntax/syntax.vim There was a .vimrc file in my home folder that i have removed.
Still i keep getting the same error. Presently in my home folder there is no .gvimrc or .vimrc file.
But still i keep getting the same error. I am not too sure where this file is mentioned.
Background info: The SHELL has been changed from tcsh to bash Earlier i had created a .vimrc file in tcsh, i have removed the .vimrc in bash SHELL.
I am setting some environmental variable in my .bashrc , the sample code I was provided with is for CSH but I am using bash, and there are some syntax differences between them ... I got most of the script to work, but I am getting an error at this part :
Code: if ($RMSTREE == $RMANTREE) then set path=($path $RMANTREE/bin) else
I am reading Sams Teach Yourself SQL in one hour a day. In this book they work with both Oracle and MySQL to teach you SQL. So I installed mysql on my box and I am creating the empty database they use in this book so I can follow along as I read. I have noticed a few typos in the book and now I have noticed some code errors too. I just don't know enough to fix em. I am working on creating the empty database and I am getting syntax errors when I create certain tables. I have checked both the printed version of the book and the electronic version (which differ slightly) and both give me the same synatax errors. First is Creating the first table of the database. Here is the code given to me to enter. The Electronic version
[code]...
how I can correct this error and create these tables?
I'm fairly new to shell scripting and am having the hardest time figuring out why this simple script is giving me an error
The error is "syntax error near unexpected token `else'
I'm using TextEdit on OSX (sorry I'm limited to this). The only thing I can think of is that it's reading some return character and getting thrown off. I've tried saving the script using different encoding types but the same error pops up.
I also get an error at line 2 because it does not regonize as a command
I am not clear with use of + sign before function names. If any one here is aware of this syntax let me know. They have used + and - signs before some lines I am not sure of what they are?
I want to write a little time-saving alias for my .cshrc file that will move files and then cd to the directory I've moved them to. What I can't quite figure out is the syntax to say 'move all the arguments except the last one.' Here is what I have:
alias follow 'mv !:1-$-1 !:$; cd !:$'
This actually seems to work, but it also gives me an irritating error:
mv: cannot stat `destinationdirectory/-1': No such file or directory
Similarly, I tried:
alias follow 'mv !:*$#argv-1 !:$; cd !:$'
Again the move and cd are successful, but again there is an error:
mv: cannot stat `destinationdirectory/0-1': No such file or directory
I am writing a code in bash script, in my ubuntu command terminal. The program should send the message, "Hello John!!" 5 times to john's terminal (assuming he is logged on to the server). But I keep getting this error: Syntax error: end of file unexpected (expecting "done").
#!/usr/bin/sh clear x=1 # this sets up the flag so we can have it send a limited amount while [ $x -le 5 ] do write jdouglas << EFO >Hello John!! >EFO x=$(( $x + 1 )) done
I'm trying to find all the files in a specified directory that do NOT end in .archived or .error and are older than 30 mins. Currently I have: Code: find /opt/edi/incoming -type f ! ( -name "*.archived" -name "*.error" ) -cmin 30 But I keep returning files that end in those extensions and I'm not sure if I'm using -cmin correcty? If there is a better way to do this (perl, etc) I'm open to options, this is for a nagios check.
I'm new to scripting and I have a trouble with if statement syntax. The code is: Code: #there is a diff command here, and it does what i want but#i wanna see 1 if the exit value of diff is 0, and otherwise i wanna see 0.#the problem is here: (syntax error near unexpected token "then")