后宫是什么意思| 什么姿势睡觉最好| 文静是什么意思| 左侧后背疼是什么原因男性| 吃饭肚子疼是什么原因| 低血压是什么意思| 头皮长痘痘是什么原因| ag医学上是什么意思| 有什么蔬菜| 龋齿是什么意思| 胰腺炎为什么不能同房| 巨蟹跟什么星座最配| 小沙弥是什么意思| 唏嘘什么意思| 蛋白粉什么时候喝最好| 什么是职务| 杯弓蛇影的寓意是什么| 洽谈是什么意思| 滋阴潜阳是什么意思| 国帑是什么意思| 中暑喝什么好| 查甲亢挂什么科| 老鼠爱吃什么| 什么补钙效果最好| 丸吞是什么意思| 炖牛肉放什么调料好吃| 晚上睡觉容易醒是什么原因| 吃什么可以补黄体酮| 什么官许愿| 经常流鼻血是什么病的前兆| 空腹血糖17已经严重到什么时候| 十二指肠霜斑样溃疡是什么意思| 风热感冒吃什么药最快| 嗓子疼咳嗽吃什么药| 女人熬夜吃什么抗衰老| 查五行缺什么| 珑骧包属于什么档次| 脚底板疼是什么原因| 祛湿是什么意思| 857是什么意思| 心境情感障碍是什么病| 84消毒液不能和什么一起用| 天生一对是什么意思| 什么叫潮吹| 排卵的时候有什么症状| 夏天吃羊肉有什么好处| 脾胃气滞吃什么中成药| 打鼾是什么原因导致的| 六月五号是什么星座| 2006属什么| 全自动洗衣机漏水是什么原因| 145什么意思| 山东立冬吃什么| 三个代表代表了什么| 片状低回声区什么意思| 补充公积金是什么意思| 1945年是什么年| 减肥期间可以吃什么零食| 一什么亮光| 卒中中心是什么意思| hpv初期有什么症状女性| 咳嗽头晕是什么原因| 为什么会血热| 血肌酐高是什么原因| 不为良相便为良医是什么意思| 菊花有什么功效| 今天什么节日| 古灵精怪是什么意思| 龙吃什么食物| 缺少雌激素的女性会有什么症状| 7月24日是什么星座| 米粉是用什么做出来的| 鱼石脂是什么| 真心是什么意思| ems是什么意思| 项羽是什么生肖| 补体c4偏低是什么意思| 喉咙有痰吐出来有血是什么原因| 3月22日是什么星座| 执业医师是什么意思| 菱角是什么意思| 定位是什么意思| dm是什么单位| 老实的动物是什么生肖| 早上醒来嘴苦是什么原因| 什么是肺磨玻璃结节| 炼奶是什么| 吃什么可以软化肝脏| 胆囊炎吃什么消炎药| 被孤立的一般是什么人| 面粉是什么粉| 偷鸡不成蚀把米是什么意思| 谨言慎行下一句是什么| 奥美拉唑有什么副作用| 草字头加个弓念什么| 阴道长什么样| 商务专员是做什么的| molly什么意思| 婴儿采足底血是查什么| 庚是什么意思| 鳖是什么动物| 僵尸肉吃了有什么危害| 家家酒是什么意思| 二氧化碳高是什么原因| 肛门坠胀吃什么消炎药| 鬼谷子姓什么| 脆豆腐是什么做的| 电气火灾用什么灭火器| 接档是什么意思| 青少年吃什么钙片有助于长高| 人为什么要呼吸| 勾股定理是什么意思| 湿疹吃什么食物好得快| 老鸭汤炖什么好吃| 午餐吃什么好又能减肥| 孩子上火吃什么药| 坐飞机需要带什么证件| 咒语是什么意思| 梅核气是什么症状| 盐和小苏打一起有什么作用| 砚字五行属什么| 母带是什么意思| 肝外胆管扩张什么意思| 肌酸激酶高是什么病| 寓教于乐什么意思| 荨麻疹能吃什么| 300年前是什么朝代| 身高用什么单位| 生牛乳是什么意思| ellesse是什么牌子| 认栽是什么意思| 导管子是什么意思| 大腿外侧什么经络| se是什么元素| 心管是什么部位| 慢慢地什么填词语| 梦见金项链是什么意思| acs是什么意思| peak是什么牌子| 蝙蝠长什么样子图片| 前列腺炎不治疗有什么后果| 红楼梦结局是什么| 中性粒细胞偏高是什么原因| 什么生肖不认识路| 刻代表什么生肖| 白细胞偏低有什么症状| 折煞是什么意思| 梦见干活是什么意思| 肠胃炎什么症状| 打鼾挂什么科| 内分泌失调有什么症状| 用凝胶排出豆腐渣一样的东西是什么原因| 什么原因导致卵巢早衰| 总是爱出汗是什么原因| 宿便什么意思| 丞字五行属什么| 争强好胜什么意思| 高低肩挂什么科| 同房出血是什么原因| 牛欢喜是什么| 扁桃体是什么| 牙龈为什么会萎缩| ns是什么单位| 左眼皮跳是什么预兆呢| 额头长痘什么原因| 乙肝表面抗体偏高是什么意思| 辛未日五行属什么| 什么是米其林| 什么是气滞| 舌苔发白厚吃什么药| 拉痢疾吃什么药| 不疼不痒的红疹是什么| 自私自利是什么意思| 菠菜不能和什么一起吃| 12583是什么电话| pio是什么意思| 有样学样是什么意思| 受害者是什么意思| 什么叫假性发烧| beauty是什么意思| 婚姻宫是什么意思| 隐血阳性是什么意思| 肾积水是什么病严重吗| 大便出血什么原因| 木辛读什么| 喝蒲公英有什么好处| 宝宝热疹用什么药膏| dha宝宝什么时候吃最好| 嗓子痒干咳是什么原因| 人老是犯困想睡觉是什么原因| 维生素b2吃多了有什么副作用| 孩子病毒感染吃什么药| 什么人容易得肾结石| 痉挛是什么意思啊| 早博是什么| 眼睛黄是什么病| 长水泡是什么原因| 映山红是什么花| 剔除是什么意思| 什么叫临床医学| 感冒流清鼻涕吃什么药| 什么牛不吃草| 包皮炎用什么软膏| 张飞为什么不救关羽| 指甲很薄很软是为什么| 吃什么可以补黄体酮| 半夜三更是什么生肖| 细思极恐是什么意思| 一级甲等医院是什么意思| 山梨酸是什么| 鲤鱼最爱吃什么食物| 九牛一毛是什么生肖| 泛指是什么意思| 景德镇有什么好玩的| 满满的回忆什么意思| 化妆棉是干什么用的| 上眼皮肿是什么原因| 蚕豆病不能吃什么| 为什么喝茶会睡不着| 肠胃胀气是什么原因| 北京的区长是什么级别| 血崩是什么意思| 气管炎咳嗽吃什么药最有效| 为什么男人喜欢女人| 萎缩性胃炎有什么症状| 跟腱炎贴什么膏药最好| 柿子不能和什么同吃| 宋徽宗叫什么| 右胳膊发麻是什么原因| 指甲月牙代表什么意思| 男人小腿肿是什么原因| 豆豉是什么| 同字五行属什么| 儿童办护照需要什么证件| 金牛座是什么星象| 肚子胀不排便什么原因| 两个月没来月经是什么原因| 腰痛宁胶囊为什么要用黄酒送服| 子叶是什么| 三月八号什么星座| havva是什么牌子| 梦见被蛇咬是什么意思| mri是什么检查项目| 眼皮黑是什么原因| 蝴蝶代表什么生肖| 宝宝不吃奶是什么原因| 门对门风水有什么说法| 飧泄是什么意思| 阴道炎吃什么消炎药| 机械性窒息死亡是什么意思| 基友是什么关系| hpv是什么病| 1977年属蛇是什么命| 打醮是什么意思| 什么是幼小衔接| 后代是什么意思| 两个脚脖子肿什么原因| 婧是什么意思| 男性长期熬夜吃什么好| 上呼吸道感染用什么药| 榄仁叶是什么树的叶子| 农历7月20日是什么星座| 舌头发紫是什么原因| 冰粉是什么做的| 百度Jump to content

童年印象中最早的兔女郎形象 动手能力强妖孽

From Wikipedia, the free encyclopedia
This is the current revision of this page, as edited by GoingBatty (talk | contribs) at 21:58, 29 June 2025 (General fixes, replaced: OracleOracle, typo(s) fixed: 2015-02 → 2015–02). The present address (URL) is a permanent link to this version.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
百度 江苏干部群众始终牢记周恩来同志“依靠自己的聪明才智,自力更生、艰苦创业,建设美好家园”的谆谆嘱托,在他的伟大精神和崇高风范感召和激励下奋斗前行,不断谱写社会主义建设、改革和发展的新篇章。

In computing, position-independent code[1] (PIC[1]) or position-independent executable (PIE)[2] is a body of machine code that executes properly regardless of its memory address.[a] PIC is commonly used for shared libraries, so that the same library code can be loaded at a location in each program's address space where it does not overlap with other memory in use by, for example, other shared libraries. PIC was also used on older computer systems that lacked an MMU,[3] so that the operating system could keep applications away from each other even within the single address space of an MMU-less system.

Position-independent code can be executed at any memory address without modification. This differs from absolute code,[1] which must be loaded at a specific location to function correctly,[1] and load-time locatable (LTL) code,[1] in which a linker or program loader modifies a program before execution, so it can be run only from a particular memory location.[1] The latter terms are sometimes referred to as position-dependent code.[4] Generating position-independent code is often the default behavior for compilers, but they may place restrictions on the use of some language features, such as disallowing use of absolute addresses (position-independent code has to use relative addressing). Instructions that refer directly to specific memory addresses sometimes execute faster, and replacing them with equivalent relative-addressing instructions may result in slightly slower execution, although modern processors make the difference practically negligible.[5]

History

[edit]

In early computers such as the IBM 701[6] (29 April 1952) or the UNIVAC I (31 March 1951) code was not position-independent: each program was built to load into and run from a particular address. Those early computers did not have an operating system and were not multitasking-capable. Programs were loaded into main storage (or even stored on magnetic drum for execution directly from there) and run one at a time. In such an operational context, position-independent code was not necessary.

Even on base and bounds[b] systems such as the CDC 6600, the GE 625 and the UNIVAC 1107, once the OS loaded code into a job's storage, it could only run from the relative address at which it was loaded.

Burroughs introduced a segmented system, the B5000 (1961), in which programs addressed segments indirectly via control words on the stack or in the program reference table (PRT); a shared segment could be addressed via different PRT locations in different processes. Similarly, on the later B6500, all segment references were via positions in a stack frame.

The IBM System/360 (7 April 1964) was designed with truncated addressing similar to that of the UNIVAC III,[7] with code position independence in mind. In truncated addressing, memory addresses are calculated from a base register and an offset. At the beginning of a program, the programmer must establish addressability by loading a base register; normally, the programmer also informs the assembler with a USING pseudo-op. The programmer can load the base register from a register known to contain the entry point address, typically R15, or can use the BALR (Branch And Link, Register form) instruction (with a R2 Value of 0) to store the next sequential instruction's address into the base register, which was then coded explicitly or implicitly in each instruction that referred to a storage location within the program. Multiple base registers could be used, for code or for data. Such instructions require less memory because they do not have to hold a full 24, 31, 32, or 64 bit address (4 or 8 bytes), but instead a base register number (encoded in 4 bits) and a 12–bit address offset (encoded in 12 bits), requiring only two bytes.

This programming technique is standard on IBM S/360 type systems. It has been in use through to today's IBM System/z. When coding in assembly language, the programmer has to establish addressability for the program as described above and also use other base registers for dynamically allocated storage. Compilers automatically take care of this kind of addressing.

IBM's early operating system DOS/360 (1966) was not using virtual storage (since the early models of System S/360 did not support it), but it did have the ability to place programs to an arbitrary (or automatically chosen) storage location during loading via the PHASE name,* JCL (Job Control Language) statement.

So, on S/360 systems without virtual storage, a program could be loaded at any storage location, but this required a contiguous memory area large enough to hold that program. Sometimes memory fragmentation would occur from loading and unloading differently sized modules. Virtual storage - by design - does not have that limitation.

While DOS/360 and OS/360 did not support PIC, transient SVC routines in OS/360 could not contain relocatable address constants and could run in any of the transient areas without relocation.

IBM first introduced virtual storage on IBM System/360 model 67 in (1965) to support IBM's first multi-tasking operating and time-sharing operating system TSS/360. Later versions of DOS/360 (DOS/VS etc.) and later IBM operating systems all utilized virtual storage. Truncated addressing remained as part of the base architecture, and still advantageous when multiple modules must be loaded into the same virtual address space.

By way of comparison, on early segmented systems such as Burroughs MCP on the Burroughs B5000 (1961) and Multics (1964), and on paging systems such as IBM TSS/360 (1967),[c] code was also inherently position-independent, since subroutine virtual addresses in a program were located in private data external to the code, e.g., program reference table, linkage segment, prototype section.

The invention of dynamic address translation (the function provided by an MMU) originally reduced the need for position-independent code because every process could have its own independent address space (range of addresses). However, multiple simultaneous jobs using the same code created a waste of physical memory. If two jobs run entirely identical programs, dynamic address translation provides a solution by allowing the system simply to map two different jobs' address 32K to the same bytes of real memory, containing the single copy of the program.

Different programs may share common code. For example, the payroll program and the accounts receivable program may both contain an identical sort subroutine. A shared module (a shared library is a form of shared module) gets loaded once and mapped into the two address spaces.

SunOS 4.x and ELF

[edit]

Procedure calls inside a shared library are typically made through small procedure linkage table (PLT) stubs, which then call the definitive function. This notably allows a shared library to inherit certain function calls from previously loaded libraries rather than using its own versions.[8]

Data references from position-independent code are usually made indirectly, through Global Offset Tables (GOTs), which store the addresses of all accessed global variables. There is one GOT per compilation unit or object module, and it is located at a fixed offset from the code (although this offset is not known until the library is linked). When a linker links modules to create a shared library, it merges the GOTs and sets the final offsets in code. It is not necessary to adjust the offsets when loading the shared library later.[8]

Position-independent code that accesses global data does so by fetching the address for the global variable from its entry in the GOT. As the GOT is at a fixed offset from the code, the offset between the address of a given instruction in the code and the address of a GOT entry for a given global variable is also fixed, so that the offset does not need to be changed depending on the address at which the position-independent code is loaded. An instruction that fetches the GOT entry for a global variable would use an addressing mode that contains an offset relative to some instruction in the code; this might be a PC-relative addressing mode if the instruction set architecture supports it, or a register-relative addressing mode, with functions loading that register with the address of an instruction in the function prologue.[8][9][10][11]

Windows DLLs

[edit]

Dynamic-link libraries (DLLs) in Microsoft Windows use variant E8 of the CALL instruction (Call near, relative, displacement relative to next instruction). These instructions do not need modification when the DLL is loaded.

Some global variables (e.g. arrays of string literals, virtual function tables) are expected to contain an address of an object in data section respectively in code section of the dynamic library; therefore, the stored address in the global variable must be updated to reflect the address where the DLL was loaded to. The dynamic loader calculates the address referred to by a global variable and stores the value in such global variable; this triggers copy-on-write of a memory page containing such global variable. Pages with code and pages with global variables that do not contain pointers to code or global data remain shared between processes. This operation must be done in any OS that can load a dynamic library at arbitrary address.

In Windows Vista and later versions of Windows, the relocation of DLLs and executables is done by the kernel memory manager, which shares the relocated binaries across multiple processes. Images are always relocated from their preferred base addresses, achieving address space layout randomization (ASLR).[12]

Versions of Windows prior to Vista require that system DLLs be prelinked at non-conflicting fixed addresses at the link time in order to avoid runtime relocation of images. Runtime relocation in these older versions of Windows is performed by the DLL loader within the context of each process, and the resulting relocated portions of each image can no longer be shared between processes.

The handling of DLLs in Windows differs from the earlier OS/2 procedure it derives from. OS/2 presents a third alternative and attempts to load DLLs that are not position-independent into a dedicated "shared arena" in memory, and maps them once they are loaded. All users of the DLL are able to use the same in-memory copy.

Multics

[edit]

In Multics each procedure conceptually[d] has a code segment and a linkage segment.[13] [14] The code segment contains only code and the linkage section serves as a template for a new linkage segment. Pointer register 4 (PR4) points to the linkage segment of the procedure. A call to a procedure saves PR4 in the stack before loading it with a pointer to the callee's linkage segment. The procedure call uses an indirect pointer pair[15] with a flag to cause a trap on the first call so that the dynamic linkage mechanism can add the new procedure and its linkage segment to the Known Segment Table (KST), construct a new linkage segment, put their segment numbers in the caller's linkage section and reset the flag in the indirect pointer pair.

TSS

[edit]

In IBM S/360 Time Sharing System (TSS/360 and TSS/370) each procedure may have a read-only public CSECT and a writable private Prototype Section (PSECT). A caller loads a V-constant for the routine into General Register 15 (GR15) and copies an R-constant for the routine's PSECT into the 19th word of the save area pointed to be GR13.[16]

The Dynamic Loader[17] does not load program pages or resolve address constants until the first page fault.

Position-independent executables

[edit]

Position-independent executables (PIE) are executable binaries made entirely from position-independent code. While some systems only run PIC executables, there are other reasons they are used. PIE binaries are used in some security-focused Linux distributions to allow PaX or Exec Shield to use address space layout randomization (ASLR) to prevent attackers from knowing where existing executable code is during a security attack using exploits that rely on knowing the offset of the executable code in the binary, such as return-to-libc attacks. (The official Linux kernel since 2.6.12 of 2005 has a weaker ASLR that also works with PIE. It is weak in that randomness is applied to whole ELF file units.)[18]

Apple's macOS and iOS fully support PIE executables as of versions 10.7 and 4.3, respectively; a warning is issued when non-PIE iOS executables are submitted for approval to Apple's App Store but there's no hard requirement yet [when?] and non-PIE applications are not rejected.[19][20]

OpenBSD has PIE enabled by default on most architectures since OpenBSD 5.3, released on 1 May 2013.[21] Support for PIE in statically linked binaries, such as the executables in /bin and /sbin directories, was added near the end of 2014.[22] openSUSE added PIE as a default in 2015–02. Beginning with Fedora 23, Fedora maintainers decided to build packages with PIE enabled as the default.[23] Ubuntu 17.10 has PIE enabled by default across all architectures.[24] Gentoo's new profiles now support PIE by default.[25] Around July 2017, Debian enabled PIE by default.[26]

Android enabled support for PIEs in Jelly Bean[27] and removed non-PIE linker support in Lollipop.[28]

See also

[edit]

Notes

[edit]
  1. ^ This allows each process using a shared copy to see it at a different virtual address.
  2. ^ But a separate copy of the code was loaded for each job.
  3. ^ While TSS/360 supported shared PIC, that was not true of all paging systems
  4. ^ There are some technical deviations for performance reasons that are beyond the scope of this article.

References

[edit]
  1. ^ a b c d e f "Types of Object Code". iRMX 86 Application Loader Reference Manual (PDF). Intel. pp. 1-2, 1-3. Retrieved 2025-08-07. […] Absolute code, and an absolute object module, is code that has been processed by LOC86 to run only at a specific location in memory. The Loader loads an absolute object module only into the specific location the module must occupy. Position-independent code (commonly referred to as PIC) differs from absolute code in that PIC can be loaded into any memory location. The advantage of PIC over absolute code is that PIC does not require you to reserve a specific block of memory. When the Loader loads PIC, it obtains iRMX 86 memory segments from the pool of the calling task's job and loads the PIC into the segments. A restriction concerning PIC is that, as in the PL/M-86 COMPACT model of segmentation […], it can have only one code segment and one data segment, rather than letting the base addresses of these segments, and therefore the segments themselves, vary dynamically. This means that PIC programs are necessarily less than 64K bytes in length. PIC code can be produced by means of the BIND control of LINK86. Load-time locatable code (commonly referred to as LTL code) is the third form of object code. LTL code is similar to PIC in that LTL code can be loaded anywhere in memory. However, when loading LTL code, the Loader changes the base portion of pointers so that the pointers are independent of the initial contents of the registers in the microprocessor. Because of this fixup (adjustment of base addresses), LTL code can be used by tasks having more than one code segment or more than one data segment. This means that LTL programs may be more than 64K bytes in length. FORTRAN 86 and Pascal 86 automatically produce LTL code, even for short programs. LTL code can be produced by means of the BIND control of LINK86. […]
  2. ^ "Position Independent Executables (PIE)".
  3. ^ Levine, John R. (2000) [October 1999]. "Chapter 8: Loading and overlays". Linkers and Loaders. The Morgan Kaufmann Series in Software Engineering and Programming (1 ed.). San Francisco, USA: Morgan Kaufmann. pp. 170–171. ISBN 1-55860-496-0. OCLC 42413382. ISBN 978-1-55860-496-4. Archived from the original on 2025-08-07. Retrieved 2025-08-07. Code: [1][2][dead link] Errata: [3]
  4. ^ "Position-Independent Code". Oracle. The code within a dynamic executable is typically position-dependent, and is tied to a fixed address in memory.
  5. ^ Gabert, Alexander (January 2004). "Position Independent Code internals". Hardened Gentoo. Retrieved 2025-08-07. […] direct non-PIC-aware addressing is always cheaper (read: faster) than PIC addressing. […]
  6. ^ "701 Announced", IBM, 2025-08-07
  7. ^ Reference Manual UNIVAC III Data Processing System (PDF). Sperry Rand Corporation. 1962. UT-2488.
  8. ^ a b c Gingell, Robert A.; Lee, Meng; Dang, Xuong T.; Weeks, Mary S. Shared Libraries in SunOS (PDF). 1987 Summer USENIX Technical Conference and Exhibition. pp. 131–146.
  9. ^ System V Application Binary Interface Motorola 68000 Processor Family Supplement (PDF). Prentice-Hall. 1990. pp. 3-32 – 3-35. ISBN 0-13-877663-6.
  10. ^ System V Application Binary Interface i386 Architecture Processor Supplement (PDF) (Fourth ed.). pp. 3-35 – 3-39.
  11. ^ System V Application Binary Interface AMD64 Architecture Processor Supplement (With LP64 and ILP32 Programming Models) Version 1.0 (PDF). 2025-08-07.
  12. ^ "Advances in Memory Management for Windows". View.officeapps.live.com. Retrieved 2025-08-07.
  13. ^ Organick, Elliott Irving (1972). The Multics system; an examination of its structure. MIT Press. ISBN 9780262150125. LCCN 78157477.
  14. ^ Daley, Robert C.; Dennis, Jack B (May 1968). "Virtual Memory, Processes, and Sharing in Multics". Communications of the ACM. 11 (5). Association for Computing Machinery: 306–312. doi:10.1145/363095.363139. Retrieved 2025-08-07.
  15. ^ "Section 6 Virtual Address Formation", DPS/LEVEL 68 & DPS 8M MULTICS PROCESSOR MANUAL (PDF) (Rev. 1 ed.), Honeywell Information Systems Inc., 1982, pp. 6–21, AL39, retrieved 2025-08-07
  16. ^ "Section 3: TSS for the: Svslcm Programmer". IBM Time Sharing System Concepts and Facilities (PDF) (Seventh ed.). April 1978. p. 61. GC28-2003-6.
  17. ^ IBM System/360 Time Sharing System Dynamic Loader (PDF) (Fourth ed.). September 1971. GY28-2031-3.
  18. ^ Lettieri, G. "Address Space Layout Randomization" (PDF).
  19. ^ "iphone - Non-PIE Binary - The executable 'project name' is not a Position Independent Executable. - Stack Overflow". stackoverflow.com.
  20. ^ "iOS Developer Library". apple.com.
  21. ^ "OpenBSD 5.3 Release". 2025-08-07. Retrieved 2025-08-07.
  22. ^ "Heads Up: Snapshot Upgrades for Static PIE". 2025-08-07. Retrieved 2025-08-07.
  23. ^ "Changes/Harden All Packages - FedoraProject". fedoraproject.org.
  24. ^ "Ubuntu Foundations Team - Weekly Newsletter, 2025-08-07". 2025-08-07. Retrieved 2025-08-07.
  25. ^ "New 17.0 profiles in the Gentoo repository". 2025-08-07. Retrieved 2025-08-07.
  26. ^ Liang, Mudong (2025-08-07). "When did Debian decide to enabled PIE by default?". debian.org. Retrieved 2025-08-07.
  27. ^ "Security Enhancements in Android 1.5 through 4.1  -  Android Open Source Project". Android Open Source Project.
  28. ^ "Security Enhancements in Android 5.0  -  Android Open Source Project". Android Open Source Project.
[edit]
声音的高低叫什么 不堪一击是什么意思 abc是什么药 拉不出屎吃什么药 胃炎吃什么药
瓜皮什么意思 黄热病是什么病 喝红糖水有什么好处和坏处 维生素a是什么 沁是什么意思
屠苏指的是什么 倒吊人是什么意思 月经来了痛经吃什么药 吕布的马叫什么名字 川字加一横是什么字
什么叫做缘分 吃什么能增强免疫力和抵抗力 舌根苔白厚腻是什么原因 为什么来姨妈会拉肚子 跌跌撞撞什么意思
咳嗽想吐是什么原因hcv9jop3ns2r.cn 母乳什么味道hcv9jop3ns8r.cn 黄色裤子配什么上衣hcv8jop6ns6r.cn 用甲硝唑栓有什么反应hcv9jop7ns5r.cn 吃什么补黄体酮adwl56.com
潜血阳性是什么意思hcv9jop3ns7r.cn 超度是什么意思hcv9jop1ns6r.cn by是什么意思hcv9jop5ns4r.cn 羊蝎子是什么东西hcv9jop0ns8r.cn def是什么意思gysmod.com
肺结核是什么病hcv8jop3ns8r.cn 玳瑁色是什么颜色hcv9jop1ns1r.cn 兔子爱吃什么hcv8jop7ns9r.cn 6月份怀孕预产期是什么时候hcv8jop1ns7r.cn 家里飞蛾多是什么原因hcv8jop3ns2r.cn
好雅兴是什么意思hcv9jop3ns3r.cn 怀孕会有什么症状hcv8jop3ns1r.cn 舌头上有白苔是什么原因hcv9jop2ns5r.cn 肺结节吃什么食物好naasee.com 人言轻微是什么意思hcv8jop9ns9r.cn
百度