add lab-ex3 for inline assembly for C examples
This commit is contained in:
parent
a3c7e86668
commit
f2c3333eaa
@ -1,4 +1,4 @@
|
||||
all: lab1-ex0.exe lab1-ex1.exe
|
||||
all: lab1-ex0.exe lab1-ex1.exe lab1-ex3.s
|
||||
|
||||
lab1-ex0.exe: defines.h lab1-ex0.s
|
||||
gcc -m32 -g -o lab1-ex0.exe lab1-ex0.s
|
||||
@ -11,5 +11,9 @@ lab1-ex1.exe: lab1-ex1.c
|
||||
echo "watch the interrupts in linux"
|
||||
more /proc/interrupts
|
||||
|
||||
lab1-ex3.s: lab1-ex3.c
|
||||
echo "show .s files"
|
||||
gcc -m32 -S lab1-ex3.c
|
||||
|
||||
clean:
|
||||
rm lab1-ex0.exe lab1-ex1.exe
|
||||
rm lab1-ex0.exe lab1-ex1.exe lab1-ex3.s
|
||||
|
17
related_info/lab1/lab1-ex3.c
Normal file
17
related_info/lab1/lab1-ex3.c
Normal file
@ -0,0 +1,17 @@
|
||||
void inline ex1(void){
|
||||
asm ("movl $0xffff, %%eax\n");
|
||||
}
|
||||
|
||||
void inline ex2(void){
|
||||
unsigned cr0;
|
||||
asm volatile ("movl %%cr0, %0\n" :"=r"(cr0));
|
||||
cr0 |= 0x80000000;
|
||||
asm volatile ("movl %0, %%cr0\n" ::"r"(cr0));
|
||||
}
|
||||
|
||||
void inline ex3(void){
|
||||
long __res, arg1 = 2, arg2 = 22, arg3 = 222, arg4 = 233;
|
||||
__asm__ __volatile__("int $0x80"
|
||||
: "=a" (__res)
|
||||
: "0" (11),"b" (arg1),"c" (arg2),"d" (arg3),"S" (arg4));
|
||||
}
|
8
related_info/lab1/lab1-ex3.md
Normal file
8
related_info/lab1/lab1-ex3.md
Normal file
@ -0,0 +1,8 @@
|
||||
# inline assembly for C example
|
||||
Try below command
|
||||
```
|
||||
gcc -m32 -S lab1-ex3.c
|
||||
```
|
||||
Then you will get lab1_ex3.s
|
||||
|
||||
Try to understand the contents of this .s file and the relation between .c file and .s file.
|
Loading…
Reference in New Issue
Block a user