ASSEMBLY 1 - PowerPoint PPT Presentation

1 / 13
About This Presentation
Title:

ASSEMBLY 1

Description:

assembly 1 – PowerPoint PPT presentation

Number of Views:36
Avg rating:3.0/5.0
Slides: 14
Provided by: Adel131
Category:
Tags: assembly

less

Transcript and Presenter's Notes

Title: ASSEMBLY 1


1
??? ????? ??
  • ASSEMBLY 1

2
INTRODUCE
  • ??? ??? 3??
  • ???
  • ?????
  • ????
  • ?????
  • ??? ?? ? ? ?? ???? ???? 11 ????? ??

3
ASSEMBLY LANGUAGE
  • ???? ????? ??
  • ?? (Label)
  • ???? (Mnemonic)
  • ??? (Operand)
  • ???? ??
  • eax ????? ?? 10 ??

movl 10, eax
4
ASSEMBLY C/C
  • ????? C/C? ?? ???? ??
  • ???? ??? C/C ??? ?? ???
  • ????? ???? ??? .s ???? ??
  • GCC??? ???? ???? ???
  • gcc c_source.c asm_source.s ? ??? ??
  • ???? ????? C/C ????? ?? ???
  • GCC? ??? .o ??? ??? ?? ???
  • ??? ???? ??
  • C ???? ??? ?? ????? ??? ??
  • ???? ??????? ??? ?? ??

5
INLINE ASSEMBLY
  • ?? ??
  • C/C ? ? ? ?? ??
  • ?? ??? ??? ??
  • ???? ??? ?? ???? ?? ??
  • ????? ???? ??? ???? ?? ?? ??
  • ???? ?? ??? ?? ?? ??

6
INLINE ASSEMBLY
  • ??? ???? ??
  • ???? ?? (asms)
  • ?? ?? (output)
  • ?? ?? (input)
  • ?? ??? ???? (clobber)
  • ??

__asm__ __volatile__ (asms output input
clobber)
7
INLINE ASSEMBLY
  • ??
  • __asm__
  • ??? ??? ?? ??? ????? ?? ????.
  • Gcc??? asm ? ????? ANSI? __asm__?? ???? ??
  • __volatile__
  • ???? ???? ?? ??? ?? ????.
  • ??? ?? ?? ???? ??? ? ??? ??? ? ??

8
INLINE ASSEMBLY
  • ??
  • asms
  • ???? ???? ????? ??? ??
  • ?? ??? x? ?? ??? input, output ???? ??
  • output
  • constraint (variable)??? ???
  • input
  • output? ??
  • clobber
  • output, input?? ???? ??? asms? ???? ?? ??? ?? ??

9
INLINE ASSEMBLY
  • ?? ??
  • asms? ??? ??? ??? output, input, clobber? ?? ???
    ? ??
  • \n\t ? ??
  • ?????? ??? ? ?? ??? ?? ?? ???? ??

__asm__ __volatile__ (asms output) // input,
clobber ??
__asm__ __volatile__ (asms input clobber)
// output ??
__asm__ __volatile__ (movl 1 0\n\taddl 2
0 r (out) r (x) r (y))
10
INLINE ASSEMBLY
  • Constraints
  • 'm' ????? ???? ?? ??? ??? ????? ???? ????
  • 'o' ??? ??? ????? ???? ??? ????
  • 'V' ??? ???? ????? ???? ??? ????
  • 'lt' ?? ??(?? ????? ??? ????) ????? ??? ????
  • 'gt' ?? ??(?? ????? ??? ????) ????? ??? ????
  • 'r' ?? ???? ?? ????
  • 'd', 'a', 'f', ... ???? ?? ????? ???? ?? ????? d,
    a, f? ?? 68000/68020?? ???, ????, ??? ??? ?????
    ????.
  • 'i' immediate ?? ?? ???? ????. ??? ? ??? ???
    ????.
  • 'n' immediate ?? ??? ??? ?? ?? ????. ?? ???? ???
    ? ? ? ?? ??? ????? ??? ???? ???? 'i'?? 'n'?
    ???? ?? ?????.
  • 'I', 'J', 'K', ... 'P' ???? ?? ?? ?? ?? ?? ????
    ????. 68000?? 'I'? 1?? 8??? ?? ????. ??? ???
    ???? ??? ??? ???? ???.
  • 'E' immediate ??? ????? ???? ?? ?? ??? ??? ???
    ???? ?? ??.
  • 'F' immediate ??? ????.
  • 'G', 'H' ?? ?? ?? ?? ???? ??? ????? ???? ?? ???.
  • 's' ?? ??? ???? ?? immediate ??? ???? ????
  • 's' ?? ??? ???? ?? immediate ??? ???? ????. 's'?
    'i'? ?? ?? ??? ?? ?? ??? ??? ? ?? ?? ????.
  • 'g' ?? ????? ??? ?? ????, ??? ?? immediate ?? ?
    ????? ???? ????.
  • '0', '1', '2', ... '9' ?? ??? ????? ??? ???.
  • 'p' ??? ??? ????? ???? ????. "load address"?
    "push address" ??? ?? ?.
  • 'Q', 'R', 'S', ... 'U' Q?? U??? ??? ???? ?? ???
    ?? ?? ????? ????.

11
INLINE ASSEMBLY
  • Modifier
  • ''
  • ????? ?? ???? ???. ?? ?? ???? ??? ??? ???.
  • ''
  • ??, ?? ?? ??. ''? ?? output? ''? input/output
    ??? ?? ????. ??? ?? ?? ????? input ???? ????.
  • '
  • "earlyclobber" ????? ???? input ????? ???? ???
    ??? ?? ?? ??? ?? ????.??? input ????? ??? ?????
    ??? ???? ????? ? ??.
  • gcc? input ??? ? ???? ?? output? ????? ???? ???
    input? ??? ??? output? ?? ?? ? output? input ??
    ?? ???? ??? ??? ? ??. ?? ??? ?? ?? output? ???
    ??? input? ?? ???? ?? ??? ?? ??? ????? input?
    output? ??? ??? ??? ?? ? ??.
  • '' ?? ???? ????? ?? ???? ????. ?? ????? ????
    ??? ? eax ?? ?? ??
  • '' ??? ??? ?? ? ?? ?? ??? constraints? ????
    ???.

12
EXAMPLE 1
.globl main main movl 10, eax imull eax, ea
x ret
13
EXAMPLE 2
include ltstdio.hgt include ltstdlib.hgt int main()
int a, sum a 1 __asm__
__volatile__( "movl 1, 0 \n\t" "addl 2,
0 \n\t" "addl 3, 0 \n\t" "addl 4,
0 \n\t" "addl 5, 0 " g (sum)
r (a), r (a1), r (a2), r (a3), r
(a4) ) printf("ad, sumd\n", a, sum)
return 0
Write a Comment
User Comments (0)
About PowerShow.com